支持ajax的爬虫

来源:互联网 发布:家纺品牌 知乎 编辑:程序博客网 时间:2024/05/24 05:01

最近要抓取一个基于ajax的动态网站,最开始想到wget和teleport这些当年web时代的产品,但是发现他们都不支持ajax,也难怪,web时代,网站都是多页面构架,搜索引擎又是流量的重要入口,因此都提供比较好的静态页面,但是随着移动端的普及,微信成为流量主要入口,单页面,基于滚动和ajax的动态页面越来越多,需要开发专门的程序针对页面的ajax抓取内容。

找了一下,试用了crawljax 3.6版本,还是不错的,很方便,对javascript的支持理论上跟客户端是一致的

大家去官网下载最新版本,cli版本就行,命令行运行

java -Dwebdriver.chrome.driver="chromedriver.exe" -jar crawljax-cli-3.6.jar -v -b CHROME -override http://foo.com/rest/api ./output_dir

-Dwebdriver.chrome.driver="chromedriver.exe",因为后面用CHROME作为js引擎,因此需要设置chromedriver.exe,chromedriver.exe需要单独下载

-v,详细输出各个步骤

-b CHROME,使用CHROME模式,默认是FIREFOX,就FIREFOX的占有率,怕产品没测试过FF的兼容性,还是用CHROME更放心,也支持IE

-overrite,如果output_dir存在,则覆盖

url和output_dir就很好理解了


抓取的结果,因为是基于单页面状态空间遍历来抓取的,因此主页是以各个状态的截图的Graph形式展示,可以查看每个状态下DOM形式展开之后的HTML。


这个crawljax的优点很多

1. 有一定学术性,主要是状态空间的遍历,确保页面能够抓取的比较全面

2. 基于java,而且开源,接口很好,支持各种灵活的配置扩展,比如如果有input,可以按照指定的关键字来查询,非click事件也可以扩展模拟

3. 抓取结果的DOM全展开,网页内容查看比较方便

4. 基于真实客户端浏览器的js内核,页面解析跟客户端更加一致,确保结果正确


提示:下载需要amazon云和google服务,需要翻墙。


0 0
原创粉丝点击