转载出处:http://guoyunsky.javaeye.com/blog/642794
网上关于Heritrix的基本介绍有很多,这里就不再重复。我这里主要介绍下它的优缺点。然后我会介绍它的运作流程以及我会从流程中各个点结合源码来分别介绍....
Heritrix整体让人感觉有些复杂和繁琐,一个爬虫写成这样也真是成仙了。接触Heritrix有1年半了,大概花了2个月的时间(每天看代码时间8小时以上)将它的代码看完。这1年半也接触过Lucene和Hadoop,也兴致勃勃的调试过他们的代码,但大多是半途而废。可能因为自己工作的原因吧,要一直不停的抓取数据改进爬虫,但更主要的还是发现他们的代码其实都差不多,只是思想、设计和作用不一样而已。于是决定还是把时间花在Heritrix上,争取把他搞透,然后举一反三成为自己的东西,以后再去研究Lucene、Haddop自然也就不在话下。
首先说下Heritrix的优缺点吧,以后我会不断扩展,也欢迎大家发表意见:
1.高度可扩展性,但因为这个也加重了它的复杂和繁琐。Heritrix抓取个URL分为8个处理器分工合作完成,每个处理器都可在order.xml中配置,所以使用者可以自己扩展并使用他们,只要继承相关的父类即可。
2.性能优秀:
1)Heritrix对抓取过的Host都会相应的保存,并放在内存中,如果再次从这个Host中抓取数据就可以避免很多重复性的东西
2)可以发现运行Heritrix占用的资源很少,跑一个月也是如此。只因Heritrix在运算和IO操作上都控制得很好。而且这些操作都可以配置,比如下载URL将它写到本机每个线程最多占用多少内存。也有可能很多人会质疑,说自己扩展了Heritrix经常内存溢出,我只能说内存溢出那部分错误只会发生在你扩展的那部分代码上
3.对抓取的高度控制性:
1)严格遵守爬虫协议,用户可以针对不同的Host配置不同的爬虫策略
2)可以高度控制抓取速度、抓取规模、抓取时间等,甚至对不同的Host都可以不同的控制。
3)可以控制爬虫无节制的抓取某一个Host。很多服务器肯定无法承受爬虫无节制的抓取,所以我们得需要在爬虫上做一些控制,而Heritrix在这一方面做好。不仅可以通过控制抓取速度来控制,还可以控制对某一个Host的抓取速度
4.功能齐全:
1)有数据库这样的checkpoint,可以定时备份数据
2)很好的日志结构,可以使得它在某一次抓取之上继续抓取,而避免了重复抓取的重复劳动
2)很好的Web界面管理功能,并可以动态的获知抓取情况,如抓取速度,下载字节数
5.缺点:
1)Heritrix适合互联网抓取,也就是抓取多个网站并整站复制。而对于垂直抓取,自身没有这样的机制,因为垂直抓取需要定时定点抓取数据,而Heritrix一旦抓取完毕就停止。而且自身的代码也不适合垂直抓取,重复劳动太多。比如对URL的过滤,基本上8个处理器每个都需要过滤。而垂直抓取都是针对性的抽取URL,自然抽取到的URL是用户想要的URL,无需过滤...
2)Heritrix对中文支持不够,比如URL中有中文的URL肯定抽取不到,但这个改动部分代码页就是它的正则表达式即可
3)Heritrix使用多线程进行抓取,但抓取一段时间后会发现线程越来越少。因为Heritrix用调度中心管理要抓取的URL,将他们放入BDB数据库中。比如当BDB数据库中有10个URL而抓取的线程有25个的时候,那10个URL只能分配给10个线程抓取,另外15个线程会由于没有URL可抓取可死掉。不过这一方面改动代码也可以实现...
4)很多人抓取一段时间后会发现Heritrix会莫名其妙的停掉,或者运行30个DNS就停止,而重新运行之后又好好的。首先Heritrix的停止是在没有活动状态的线程之后停止,而线程的死掉会因为上面一点。所以当发生网络问题时而导致网页内容无法获取时就会发生这种问题,因为无法获取网页内容就意味着抽取不到新的URL。Heritrix封装了HttpClient去获取网页内容,这一块有很多隐患,目前我也在研究解决中。
5)综合以上两点就意味着Heritrix没有很好的容错性以及回复机制,只能自己改动代码来改善这一点,比如Heritrix停止后可以延续上一次的抓取继续抓取,当线程不够可以自动补充....
以上是我对Heritrix的看法,其中有很多很多值得我们学习的地方。比如读取order.xml可以说是相当灵活....我想随着自己对Heritrix的深入我对它的看法也会慢慢改变....这里欢迎大家发表看法和意见...
分享到:
相关推荐
heritrix学习源码和资料
Heritrix的文件结构分析 各个类说明 配置文件order_xml介绍....
自己学习网络爬虫时知识所学习的资料,希望可以和大家分享,并能对大家有所帮助,希望能共同进步。
Lucene 2.0+Heritrix 源码 csdn 开发自己的搜索引擎——Lucene 2.0+Heritrix
heritrix1.14.4的源码包,包含heritrix1.14.4.zip和heritrix1.14.4-src.zip。heritrix是一种开源的网络爬虫,用于爬去互联网中的网页。如何配置和使用heritrix爬虫,请移步:...
Heritrix1.14.4安装配置使用包,其中包括源码包。 具体使用方法可参考:http://blog.csdn.net/baalhuo/article/details/52189425
heritrix3.2源码包 https://github.com/xiamizy/heritrix-package 下载编译后的文件
heritrix1.14.4源码+项目
Heritrix+Lucene+Dwr 搜索引擎框架包 多次开发中使用的 据对可用
Lucene Heritrix 搜索 Lucene Heritrix csdn
从网上找得应该是中文Heritrix源码最详细的说明了。折腾了好久,没有把网页打成chm,只能打个exe用用。
开发自己的搜索引擎lucene+heritrix(第2版)(ch13-ch15源码)
heritrix-1.14.4爬虫框架及源码
自己学习网络爬虫时知识所学习的资料,希望可以和大家分享,并能对大家有所帮助,希望能共同进步。
Heritrix User Manual https://webarchive.jira.com/wiki/display/Heritrix/Heritrix3 Heritrix3(或简称H3)指Heritrix的3.0发布。 目前官方的Heritrix 3.0.0版已经发布(2009年12月)。 后续的发行H3将是3.0.1...
heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置
heritrix系统使用、一个ppt 介绍heritrix的基本概念、以及原理知识
在/Heritrix1/src/org/archive/crawler/Heritrix.java启动之后,访问https://localhost:8089登录admin密码admin直接用
heritrix-3.2.0的源码,有意学习爬虫的童鞋,可以研究下源代码!
Heritrix爬虫源码,包含使用heritrix对太平洋手机网进行爬取