动态网页抓取(如果说10万行javascript代码中只有1000行是加载数据的代码)

优采云 发布时间: 2021-12-23 16:01

  动态网页抓取(如果说10万行javascript代码中只有1000行是加载数据的代码)

  很多人在遇到网页动态加载数据时,习惯使用selenium webdriver这个自动化测试工具。连接浏览器驱动可以实现javascript代码的逆向分析。但是这种方法有一个明显的缺点:性能太差。更重要的是,它的采集效率的下限很大程度上不是取决于数据采集,而是取决于网页上javascript代码的数量。如果这些代码很多,那么我们的网络爬虫运行端就需要花费更多的资源来解析这些javascript代码;但是,如果10万行javascript代码中只有1000行是加载数据的代码,那是很不划算的……

  解决这个问题最好的办法是直接下载javascript加载的数据,避免运行庞大的selenium webdriver和各种浏览器驱动,避免解析过多不相关的javascript代码。毫无疑问,采集数据的性能会得到很大的提升,节省大量的资源。

  以上就是不使用selenium webdriver的好处。让我们谈谈如何实现它。

  大家都知道FireFox浏览器,前端开发者也应该知道,这款浏览器有一个FireBug插件,对调试前端代码很有帮助。在爬虫开发者眼中,这个插件对于编写网络爬虫也是很有帮助的。,其灵活性允许开发者快速跟踪网页动态加载的数据。

  一、安装FireBug插件

  网上有很多资料,直接百度经验就可以找到。FireBug插件默认安装在最新版本的FireFox浏览器上,无需手动安装;旧版FireFox的安装方法见百度经验,这里不再详细说明。插件安装好后,打开FireFox浏览器,按F12弹出调试器。这是我们的FireBug,说明我们已经安装成功了。

  二、 使用FireBug进一步分析爬取目标

  

  上图为网页中通过ajax请求获取的json格式数据,即动态加载的数据。现在将数据复制粘贴到json查看器工具中,得到一个json格式的json对象视图。便于分析数据结构。但是有时候出来的json数据有很多空格和换行符,导致json查看器无法解析出来,所以我建议直接在FireBug中查看json对象数据。如下所示:

  

  三、用于提取json数据

  在FireBug中查看返回Ajax回调的JSON数据的请求URL后,意味着可以通过请求该URL获取该URL返回的JSON格式数据。

  将此 URL 复制到浏览器的地址栏中,然后按 Enter。你可以看到我们想要的数据。

  

  import requests

url='http://aigaogao.com/tools/defaulttools.html'

result=requests.get(url)

html=result.content

print html

  运行上面的代码,我们可以得到图片中相同的数据。

  

  至此,动态网页的逆向工程已经实现。无需渲染js代码即可获取动态加载的数据。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线