爬虫-模拟点击,实现加载页面全部内容

  • 完成页面加载:
  • 目标分析:在爬取页面数据时,如果是遇到这个不进行点击,会导致数据爬取不全。
  • 解决方法:可以采取模拟点击来进行避免。
  • 一,它对应的xpath是
  • 二,一直点击直到最后按钮消失,页面加载完成后,xpath会变为:
  • 三,实现代码:
  • 点击任务,进入新页面
  • 目标分析:下面的文字可以点击进入一个任务页面。想实现:输入这个页面总url,自动进入每一个任务页面。并加载页面全部信息。
  • 一,通过xpath定位到文字
  • 二,代码:
  • 加载页面全部信息详解


完成页面加载:

目标分析:在爬取页面数据时,如果是遇到这个不进行点击,会导致数据爬取不全。

python网络爬虫模拟点击按钮代码 爬虫 点击_python网络爬虫模拟点击按钮代码

解决方法:可以采取模拟点击来进行避免。
一,它对应的xpath是

python网络爬虫模拟点击按钮代码 爬虫 点击_爬虫_02

二,一直点击直到最后按钮消失,页面加载完成后,xpath会变为:

style会发生变化,我们可以通过id定位,通过style来判断,是否执行点击事件。

python网络爬虫模拟点击按钮代码 爬虫 点击_html_03

三,实现代码:
WebClient webClient;
HtmlPage htmlPage;
webClient.waitForBackgroundJavaScript(10000);
webClient.setJavaScriptTimeout(10000);
WebRequest webRequest = new WebRequest(new URL(url));
htmlPage = webClient.getPage(webRequest);
//根据id状态进行判断,是否执行点击事件
 while (!("display: none;").equals(htmlPage.getElementById("getMoreTopic").getAttribute("style"))) {	//定位按钮
     DomElement more = htmlPage.getElementById("getMoreTopic");
     //点击按钮
     htmlPage = more.click();
     //等待10s,给click事件充足时间。
     webClient.waitForBackgroundJavaScript(10000);
}

点击任务,进入新页面

目标分析:下面的文字可以点击进入一个任务页面。想实现:输入这个页面总url,自动进入每一个任务页面。并加载页面全部信息。

python网络爬虫模拟点击按钮代码 爬虫 点击_爬虫_04

一,通过xpath定位到文字

python网络爬虫模拟点击按钮代码 爬虫 点击_爬虫_05

二,代码:
//爬取每一个任务模块
List<HtmlElement> items = htmlPage.getByXPath("/html/body//div[contains(@class,\"oneDiv\")]");
 	 //一条任务名,这是xpath。
     DomElement TopicMore = htmlElement.getFirstByXPath("./div[1]/div[2]/p/span");
     // 模拟点击,分别点击每一条任务,进入对应url页面
     htmlPage = TopicMore.click();
     webClient.waitForBackgroundJavaScript(10000);
     //进入任务页面后,循环加载更多,实现加载全部页面
     while (htmlPage.getElementById("more_reply") != null) {
     	DomElement more1 = htmlPage.getElementById("more_reply");
     	htmlPage = more1.click();
     	webClient.waitForBackgroundJavaScript(10000);
}
加载页面全部信息详解

python网络爬虫模拟点击按钮代码 爬虫 点击_java_06


因为点击按钮,观察xpath,会发现,这个xpath,会消失。所以可以通过判断这个id为more_reply的元素是否为空,来决定是否执行点击事件。