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

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

完成页面加载:

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

解决方法:可以采取模拟点击来进行避免。

一,它对应的xpath是

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

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

三,实现代码:

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,自动进入每一个任务页面。并加载页面全部信息。

一,通过xpath定位到文字

二,代码:

//爬取每一个任务模块
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);
}

加载页面全部信息详解


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

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

  1. 从app加载页面说开去

    好的交互设计的评判标准之一是"别让我等",但互联网产品总是受制于实际的网络问题.移动端产品则更为明显,2G.3G环境下加载不够给力,wifi环境也未必每次都是那么顺利.因此&quo ...

  2. php网站首页点击更多时获取数据,jQuery+PHP实现点击按钮加载更多,不刷新页面加载更多数据!附:可用源码+demo...

    先上效果: 刚打开页面的时候,只显示部分数据,点击加载更多的时候,就会加载我们预先定义的加载数量显示出来!当数据库里面的所有数据都显示出来,就提示全部加载了! 新建index.php jQuery+p ...

  3. 点击按钮重新加载ajax,Jquery AJAX点击链接,然后重新加载页面

    我审查了其他帖子和一些帮助我,但因为我不精通JQuery或AJAX,我想确保我正在做我需要正确的.Jquery AJAX点击链接,然后重新加载页面 在我的主页(基本URL)上,我有2个不同的输出,基于 ...

  4. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  5. js如何将数据放在一个内置窗口里面_Java 爬虫遇上数据异步加载,试试这两种办法!...

    这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...

  6. java 爬虫 异步_Java 爬虫遇上数据异步加载,试试这两种办法!

    这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...

  7. JAVA异步爬虫_Java 爬虫遇上数据异步加载,试试这两种办法!

    这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...

  8. 【黑科技】爬虫也可以一键获取 [加载更多] 数据,无编码学爬虫之三。

    今天是持续写作的第 18 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 本篇博客将带你解决网页加载更多按钮点击的问题,学习之后,你只需点点鼠标,数据就可以快速存储到本地. 此类教 ...

  9. 爬取在行平台数据(1)——动态加载页面分析

    谈及动态加载页面,最先想到的一种情形是这样的--"加载更多": 面对这种动态加载的页面,要想获得更多的数据,往往需要借助开发者工具进行辅助分析.回归正题,本文依次介绍爬取对象.分析 ...

最新文章

  1. 浏览器执行Python脚本
  2. WEB Struts2 中OGNL的用法
  3. 【Python】正负无穷
  4. 蓝桥杯 反置数 数论
  5. 去大公司和小公司实习对比
  6. 尼克老湿の面试回顾(7)
  7. 2021年年度最优质开源软件
  8. 做正确的事永远都不迟
  9. 小米路由器r2d_小米路由器二代R2D怎样设置无线中继模式
  10. RPC - 麻雀虽小,五脏俱全
  11. Surface Pro 4 无限重启的解决方法
  12. 一文搞懂 CSS3 中的渐变到底怎么玩
  13. 朴素贝叶斯代码实现python
  14. Leo 编程语言简介
  15. houdini 蜘蛛网
  16. 上海各梯队IB学校怎么选?
  17. 关于Chrome浏览器瀑布流
  18. MATLAB中diag函数的作用
  19. python zip暴力破解
  20. Windows应用程序设计基础(常用控件2)

热门文章

  1. 数据库trunc的用法
  2. SegmentFault 思否发布开源问答社区软件 Answer
  3. 如何建立一个小型的局域网,来实现电脑与电脑之间的通信
  4. DOS里的NET命令用法
  5. idea恢复误删文件
  6. atcoder abc284 E
  7. 微信小程序----对接OneNet平台(测试版)
  8. DropDownList 控件
  9. mapX - 基本操作(1)
  10. Sql2012的下载与安装