第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

用Java爬慕課網(wǎng)猿問

標(biāo)簽:
爬蟲

使用技术

Java
selenium
Chrome

技术解析

使用Java作为开发语言,selenium作为主要爬虫框架

开发准备

IDEA

Chrome

JDK 8

Maven3.3+

新建Maven项目

新建简单的Maven项目

下载驱动

自行下载 chromedriver.exe

放入项目跟目录

引入jar包

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.12</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.9.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.10.0</version>
    </dependency>
  </dependencies>

开始编写

创建BrowserUtils.java文件,用于创建浏览器

/**
 * 打开谷歌浏览器.
 *
 * @return 返回浏览器
 */
public static WebDriver getInstanceByChrome() {
  try {
    String driverDirectory = "chromedriver.exe";
    ChromeDriverService src = new ChromeDriverService.Builder()
            .usingDriverExecutable(new File(driverDirectory)).usingAnyFreePort().build();
    src.start();
    ChromeOptions options = new ChromeOptions();
    ChromeDriver driver = new ChromeDriver(src, options);
    driver.manage().window().maximize();
    return driver;
  } catch (IOException e) {
    e.printStackTrace();
    return null;
  }
}

创建BasicHandler.java,用户存储当前任务的url

public abstract  class BasicHandler {

  private String url;

  public BasicHandler(String url) {
    this.url = url;
  }

  public String getUrl() {
    return url;
  }
}

创建MainHandler用于执行任务

public class MainHandler extends BasicHandler {

  public MainHandler(String url) {
    super(url);
  }


  public List<Task> getTask() throws Exception {
  //todo 爬取代码
  }
}

创建Task类,用于存储下一步需要爬去的任务

public class Task {

  private String url;
  private String title;

  public String getUrl() {
    return url;
  }

  public void setUrl(String url) {
    this.url = url;
  }

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }
}

编写爬虫代码

观察以上图片

可以看到css:item clearfix修饰着所有问题,形成一个列表,需要抓取该css修饰的元素,即可获得整个列表

然后在该元素下,抓取css :que-title,标签的href,text即可抓取到一个问题的标题和链接

实现

在MainHandler,getTask()中加入代码

 WebDriver webDriver = BrowserUtils.getInstanceByChrome();
    if (null == webDriver) {
      throw new Exception("浏览器打开失败");
    }
    webDriver.get(super.getUrl());
    List<WebElement> listElement = webDriver.findElements(By.cssSelector(".item.clearfix"));
    List<Task> tasks = new ArrayList<Task>(listElement.size());
    for (WebElement webElement : listElement) {
      WebElement titleElement = webElement.findElement(By.className("que-title"));
      String title = titleElement.getText();
      String url = titleElement.getAttribute("href");
      Task task = new Task();
      task.setTitle(title);
      task.setUrl(url);
      tasks.add(task);
    }
    return tasks;

打开浏览器

打开一个链接

查找该链接下css为’ques-list’的元素列表

遍历列表,获取元素下的title,href

编写Application.main方法

public static void main(String args[]) throws Exception {
  List<Task> data = new MainHandler("http://idcbgp.cn/wenda").getTask();
  data.forEach(d -> {
    System.out.println("title:" + d.getTitle() + "  url:" + d.getUrl());
  });
}

运行main方法,即可看到爬去的title,和url

點(diǎn)擊查看更多內(nèi)容
9人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消