爬虫-模拟点击,实现加载页面全部内容
爬虫-模拟点击,实现加载页面全部内容
- 完成页面加载:
- 目标分析:在爬取页面数据时,如果是遇到这个不进行点击,会导致数据爬取不全。
- 解决方法:可以采取模拟点击来进行避免。
- 一,它对应的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的元素是否为空,来决定是否执行点击事件。
爬虫-模拟点击,实现加载页面全部内容相关推荐
- 从app加载页面说开去
好的交互设计的评判标准之一是"别让我等",但互联网产品总是受制于实际的网络问题.移动端产品则更为明显,2G.3G环境下加载不够给力,wifi环境也未必每次都是那么顺利.因此&quo ...
- php网站首页点击更多时获取数据,jQuery+PHP实现点击按钮加载更多,不刷新页面加载更多数据!附:可用源码+demo...
先上效果: 刚打开页面的时候,只显示部分数据,点击加载更多的时候,就会加载我们预先定义的加载数量显示出来!当数据库里面的所有数据都显示出来,就提示全部加载了! 新建index.php jQuery+p ...
- 点击按钮重新加载ajax,Jquery AJAX点击链接,然后重新加载页面
我审查了其他帖子和一些帮助我,但因为我不精通JQuery或AJAX,我想确保我正在做我需要正确的.Jquery AJAX点击链接,然后重新加载页面 在我的主页(基本URL)上,我有2个不同的输出,基于 ...
- python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...
- js如何将数据放在一个内置窗口里面_Java 爬虫遇上数据异步加载,试试这两种办法!...
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...
- java 爬虫 异步_Java 爬虫遇上数据异步加载,试试这两种办法!
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...
- JAVA异步爬虫_Java 爬虫遇上数据异步加载,试试这两种办法!
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...
- 【黑科技】爬虫也可以一键获取 [加载更多] 数据,无编码学爬虫之三。
今天是持续写作的第 18 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 本篇博客将带你解决网页加载更多按钮点击的问题,学习之后,你只需点点鼠标,数据就可以快速存储到本地. 此类教 ...
- 爬取在行平台数据(1)——动态加载页面分析
谈及动态加载页面,最先想到的一种情形是这样的--"加载更多": 面对这种动态加载的页面,要想获得更多的数据,往往需要借助开发者工具进行辅助分析.回归正题,本文依次介绍爬取对象.分析 ...
最新文章
- 浏览器执行Python脚本
- WEB Struts2 中OGNL的用法
- 【Python】正负无穷
- 蓝桥杯 反置数 数论
- 去大公司和小公司实习对比
- 尼克老湿の面试回顾(7)
- 2021年年度最优质开源软件
- 做正确的事永远都不迟
- 小米路由器r2d_小米路由器二代R2D怎样设置无线中继模式
- RPC - 麻雀虽小,五脏俱全
- Surface Pro 4 无限重启的解决方法
- 一文搞懂 CSS3 中的渐变到底怎么玩
- 朴素贝叶斯代码实现python
- Leo 编程语言简介
- houdini 蜘蛛网
- 上海各梯队IB学校怎么选?
- 关于Chrome浏览器瀑布流
- MATLAB中diag函数的作用
- python zip暴力破解
- Windows应用程序设计基础(常用控件2)