使用FireBug插件辅助采集网页动态加载数据

来源:互联网 发布:mac怎么下载idea 编辑:程序博客网 时间:2024/05/21 09:55

许多人在遇到网页动态加载数据的时候都习惯于使用selenium webdriver这款自动化测试工具,对接上浏览器驱动可以实现对javascript代码的逆向解析。但这种方式有1个明显的弊端:性能太差。更重要的是,其采集效率的下限很大程度上并不取决于数据采集者,而是取决于网页上有多少javascript代码,如果这些代码很多,那么我们的网络爬虫运行端就需要耗费更多的资源来解析这些javascript代码;然而,如果说10万行javascript代码中只有1000行是加载数据的代码,那就非常不划算了……

解决这种问题最好的办法就是直接把javascript中加载的数据采集下来,避免运行庞大的selenium webdriver和各种浏览器驱动,也避免解析过多无关的javascript代码。毫无疑问,采集数据的性能会大幅度上升,也省下了许多资源。

以上就是不使用selenium webdriver的好处。下面来说说具体怎么去实现。

FireFox浏览器大家都知道,前端开发者们也都应该知道这个浏览器有个FireBug插件十分有助于调试前端代码,在爬虫开发者们的眼中,这个插件还对编写网络爬虫有很大的帮助,其灵活性能够让开发者迅速追踪到网页动态加载的数据。

一、安装FireBug插件

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

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

这里写图片描述

上图所示是网页中通过ajax请求得到的json格式数据,也就是动态加载的数据,现在把这些数据复制下来,粘贴到json viewer工具中,可以得到一个被json格式化以后的json对象视图,方便分析数据结构。但有时出来的json数据中有大量空格换行,导致json viewer解析不出来,所以我更推荐直接在FireBug中,查看json对象数据。如下图:

这里写图片描述

三、使用提取json数据

在FireBug中查看到了返回Ajax回调的JSON数据的那个请求URL以后,就意味着:请求该URL可以获取其返回的JSON格式数据。

http://aigaogao.com/tools/action.aspx?act=sdc
把这段URL复制到浏览器的地址栏中,回车。可以看到我们要的数据。
这里写图片描述

import requestsurl='http://aigaogao.com/tools/defaulttools.html'result=requests.get(url)html=result.contentprint html

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

这里写图片描述

至此,便实现了对动态网页的逆向工程。不需要渲染js代码也能获取到动态加载的数据。

原创粉丝点击