htmlunit抓取动态网页(分享一种解决方案,代码以及部分截图不方便贴出,请谅解!)
优采云 发布时间: 2022-02-15 06:15htmlunit抓取动态网页(分享一种解决方案,代码以及部分截图不方便贴出,请谅解!)
说明:只是分享一个解决方案,代码和部分截图不便贴,请谅解!
前段时间,我一直在研究爬虫来爬取网络上的特定数据。如果只是一个静态网页,那就很简单了。直接使用Jsoup:
Document doc = Jsoup.connect(url).timeout(2000).get();
获取Document然后为所欲为,但是一旦遇到一些动态生成的网站就不行了,因为数据是页面加载完成后执行js代码加载的,或者是用户滑动触发的浏览js加载数据,这样的网页使用Jsoup显然无法获取到想要的数据。
后来用Selenium获取动态网页的数据,可以成功获取到数据(实现方法),程序打包在一台机器上运行,开始测试,然后结果不太理想,并且经常出现内存溢出,或者浏览器升级导致驱动和浏览器版本不匹配等一系列问题。今天早上来到公司,发现程序又被炸了。半夜没人动机器,鼠标键盘都失灵了,只好重启,不说是什么问题,所以测试修改测试太麻烦,所以决定放弃用Selenium,稳定性太差,我考虑用htmlunit等但是那些工具效果不是很好,
首先,动态网页,既然是动态的,肯定是在浏览器加载网页后,向服务器发送了网络请求。如果我得到网络请求的url,模拟参数,自己发送请求,解析数据是不是更好,然后开始工作:
抓包工具:fiddle
不懂fiddle的,建议百度学习一下
安装好后打开fiddle,打开浏览器,打开目标url,然后就可以看到fiddle中打开这个网页的所有网络请求了:
我不会在这里发图片,我怕人家惹我。. . .
然后就是一一查看网络请求:
先看左边的图标,直接略过图,显然我们需要的是数据,重点关注文本格式的请求,然后右键copy->just url 把url复制到浏览器看看可以get,最后找到18行的request就是数据接口,可以直接获取数据,而且是json格式!!!!!!!!
真的很爽,直接json就行了,剩下的就简单了,解析数据。. . . . . . . 略略。. . . . . 话不多说,继续敲代码,这里只是分享一个解析动态网页的方法,欢迎在此发表评论,一起讨论,寻找更好的解决问题的方法!
2016-11-07
迦南香