Nutch-Htmlunit 1.8 发布:基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件

EntDIY
 EntDIY
发布于 2014年08月08日
收藏 47

之前提供了一个版本,是直接把plugin形式的源码放到代码库,后来发现有不少人反馈说自己集成到apache nutch中编译或运行,遇到这那的问题。因此这次干脆基于Apache Nutch 1.8源码工程,把所有插件源码/依赖/运行参数等预置好,使大家能更简洁全面的使用这个插件。

http://www.oschina.net/p/nutch-htmlunit

http://git.oschina.net/xautlx/nutch-htmlunit

https://github.com/xautlx/nutch-htmlunit


Nutch Htmlunit Plugin

项目简介

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

According to the implementation of Apache Nutch 1.8, we can't get dynamic HTML information from fetch pages including AJAX requests as it will ignore all AJAX requests.

This plugin will use Htmlunit to fetch whole page content with necessary dynamic AJAX requests. It developed and tested with Apache Nutch 1.8, you can try it on other Nutch version or refactor the source codes as your design.

主要特性

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

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

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

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

运行体验

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

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

cd nutch-htmlunit/runtime/local

bin/crawl urls crawl false 1

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

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

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

扩展插件说明

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

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

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

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Nutch-Htmlunit 1.8 发布:基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件
加载中

最新评论(11

逸_风
逸_风
支持一下
snail_pang
snail_pang

引用来自“java10001”的评论

这个好,不过htmlunit感觉对于ajax的解析还是存在一些问题,不稳定

引用来自“snail9527”的评论

相当不稳定,容易死掉,效率极低。

引用来自“S2JH”的评论

请问你是指htmlunit本身不稳定还是我提交这个插件运行不稳定?

引用来自“snail9527”的评论

soryy!没说清楚!htmlunit!
傻B了!sorry都敲错。
snail_pang
snail_pang

引用来自“java10001”的评论

这个好,不过htmlunit感觉对于ajax的解析还是存在一些问题,不稳定

引用来自“snail9527”的评论

相当不稳定,容易死掉,效率极低。

引用来自“S2JH”的评论

请问你是指htmlunit本身不稳定还是我提交这个插件运行不稳定?
soryy!没说清楚!htmlunit!
j
jjwlchye
梦想是点燃生命之火的催化剂。您愿意花3年兼职时间打造一辈子收入吗?你想打工30年每月收入3万, 还是努力3年后不用工作每月3万、30万...... ?没跟上【网路趋势】3年后一定后悔.100%在家上网不用出门的事业。推荐给想改变生活状态的你, 只要一分钟,填写资料 => http://tiny.cc/ondydx
jerome-yang
jerome-yang
同时抓取 http https AJAX页面 以及 pdf ppt等 该怎么设置?
我在使用nutch-htmlunit时发现它不能抓取https协议以及pdf等格式的文件
EntDIY
EntDIY

引用来自“java10001”的评论

这个好,不过htmlunit感觉对于ajax的解析还是存在一些问题,不稳定

引用来自“snail9527”的评论

相当不稳定,容易死掉,效率极低。
请问你是指htmlunit本身不稳定还是我提交这个插件运行不稳定?
snail_pang
snail_pang

引用来自“java10001”的评论

这个好,不过htmlunit感觉对于ajax的解析还是存在一些问题,不稳定
相当不稳定,容易死掉,效率极低。
杨伦亮
杨伦亮
我喜欢jsoup可惜不能取ajax
EntDIY
EntDIY
顺便广告一下,欢迎关注兄弟项目,S2JH:基于SSH的企业Web应用开发框架:集结最新主流时尚开源技术的面向企业级Web应用的基础开发框架,提供一个J2EE相关主流开源技术架构整合及一些企业应用基础通用功能和组件的设计实现的最佳实践和原型参考。

http://www.oschina.net/p/s2jh

http://git.oschina.net/xautlx/s2jh

https://github.com/xautlx/s2jh
返回顶部
顶部