Java:java爬虫获取动态网页的数据

说明: 只是分享一种解决方案,代码以及部分截图不方便贴出,请谅解!

前段时间一直在研究爬虫,抓取网络上的特定的数据,如果只是静态网页就是再简单不过了,直接使用Jsoup

Document doc = Jsoup.connect(url).timeout(2000).get();
  • 1

获取到Document 然后就想干嘛就干嘛了,但是一旦碰到一些动态生成的网站就不行了,由于数据是网页加载完成后执行js代码加载的,或者是用户滑动浏览触发的js加载数据,这样的网页使用Jsoup显然拿不到想要的数据。

后来使用 Selenium 来获取动态网页的数据,可以成功的拿到数据(实现方法),将程序打包后放在一台机器上运行,开始测试,然后结果不那么理想,经常会出现内存溢出,或者浏览器升级造成驱动与浏览器版本不匹配等一些列问题,今天早上来到公司发现程序又炸了,心里千万只*啊!大半夜又没人动这台机器,鼠标键盘全部失效,只好重启,不说找什么问题了,这样测试修改测试太折腾人了,于是打算放弃使用Selenium 稳定行太差,有考虑使用htmlunit 以及其他的那些工具但是效果都不太好,走头无路了,开始想歪点子,(其实也是一种好的解决办法,也实现了效果)。

首先动态网页,既然是动态的,那么肯定是在浏览器加载网页之后又对服务器发送了网络请求,如果我拿到网络请求的url,模拟参数,自己发送请求,解析数据不是更好,开始动手:

抓包工具:fiddle
如果不了解fiddle建议百度了解一下

安装后打开fiddle,打开浏览器,打开目标url,然后就可以在fiddle看到打开这个网页所有的网络请求:
这里就不贴图了,怕人家搞我。。。。
然后就是一个一个查看网络请求:
Java:java爬虫获取动态网页的数据

先看左边的图标,直接跳过图片,显然我们需要的是数据,重点查看文本格式的请求,然后右键 copy-> just url 复制url到浏览器看看能拿到什么,最后发现18行的请求就是数据接口,可以直接拿到数据,而且是json格式!!!!!!!!

真是太爽了,直接json,后面的事,就容易啦,解析数据。。。。。。。。略略略。。。。。。

不多说,继续敲代码去,这里只是分享一下解析动态网页的一种方法,这里写的不明白的地方欢迎评论,一起讨论找更好的方法来解决问题!

2016-11-07
伽南香

--------------------- 本文来自 伽南香 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u011343735/article/details/53507569?utm_source=copy