怎样抓取网页数据(分享一种解决方案,代码以及部分截图不方便贴出,请谅解!)
优采云 发布时间: 2021-12-26 12:11怎样抓取网页数据(分享一种解决方案,代码以及部分截图不方便贴出,请谅解!)
注:只是分享一个解决方案,代码和部分截图不方便贴出,敬请谅解!
前段时间一直在研究爬虫,爬取网上的具体数据。如果它只是一个静态网页,那就再简单不过了。直接使用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复制到浏览器看看能得到什么,最后找到18行的请求是数据接口,可以直接获取数据,而且是json格式!!!!!!!!
真的很爽,直接json,接下来,很容易解析数据。. . . . . . . 轻微地。. . . . . 话不多说,继续打代码,这里只是分享一个解析动态网页的方法,有不明白的地方欢迎大家评论,共同探讨,寻找更好的解决问题的方法!
2016-11-07
甘南乡