nutch-htmlunit 基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬开源项目

我要开发同款
匿名用户2013年09月23日
17阅读
开发技术Java
所属分类应用工具、网络爬虫
授权协议Apache

作品详情

NutchHtmlunitPlugin

重要说明:当前项目基于Nutch1.X系列已停止更新维护,转向Nutch2.x系列版本的新项目:https://www.oschina.net/p/nutch-ajax项目简介

基于ApacheNutch1.8和Htmlunit组件,实现对于AJAX加载类型页面的完整页面内容抓取解析。

AccordingtotheimplementationofApacheNutch1.8,wecan'tgetdynamicHTMLinformationfromfetchpagesincludingAJAXrequestsasitwillignoreallAJAXrequests.

ThispluginwilluseHtmlunittofetchwholepagecontentwithnecessarydynamicAJAXrequests.ItdevelopedandtestedwithApacheNutch1.8,youcantryitonotherNutchversionorrefactorthesourcecodesasyourdesign.

主要特性

常规的HTML页面抓取:对于常规的例如新闻类没有AJAX特性的页面可以直接用Nutch自带的protocol-http插件抓取。

常规的AJAX页面抓取:对于绝大部分诸如jQueryajax加载的页面,可以直接用protocol-htmlunit插件抓取。

特殊的AJAX请求页面抓取:诸如淘宝/天猫的页面采用了独特的KissyJavascript组件,导致htmlunit无法直接感知到需要等待Kissy发起的请求完成,通过等待页面加载解析内容判断处理实现此类页面数据抓取。

基于页面滚动的AJAX请求页面抓取:诸如淘宝/天猫的商品详情页面会基于页面滚动发起商品描述信息的加载,通过protocol-htmlunit扩展处理可以实现此类页面数据抓取。

运行体验

由于Nutch运行是基于Unix/Linux环境的,请自行准备Unix/Linux系统或Cygwin运行环境。

gitclone整个工程代码后,进行本地git下载目录:

cdnutch-htmlunit/runtime/local

bin/crawlurlscrawlfalse1

//urls参数为爬虫入库url文件目录;crawl为爬虫输出目录;false本应为solr索引url参数,此处设置为false不做solr索引处理;1为爬虫执行回数

运行结束后可以看到天猫商品页面的价格/描述/滚动加载的图片等所有信息都已经完整获取到。

运行日志输入示例参考:https://git.oschina.net/xautlx/nutch-htmlunit/wikis/Log

扩展插件说明

protocol-htmlunit:基于Htmlunit实现的AJAX页面Fetcher插件

parse-s2jh:基于XPath解析页面元素内容;基于数据库模式输出解析到结构化数据;对于个别复杂类型AJAX页面定制判断页面加载完成的回调判断逻辑

index-s2jh:追加设置需要额外传递给solr索引的属性数据;设定不需要索引的页面规则;

欢迎关注作者其他项目:

S2JH-基于SSH的企业Web应用开发框架

12306Hunter-(功能已失效不可用,不过还可以当作Swing开发样列参考只用)JavaSwingC/S版本12306订票助手,用处你懂的

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论