本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642794
欢迎加入Heritrix群(QQ):109148319
网上关于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的关键知识点。 1. **Heritrix简介**:Heritrix是一个可配置、可扩展的爬虫,支持多种策略和规则来决定哪些页面应该被爬取。它使用Java编写,遵循模块化设计,使得开发者能够方便地添加或...
通过对这些包的分析,我们可以看到Heritrix是一个高度模块化和可定制的爬虫。每个组件都有明确的职责,这使得Heritrix能够适应各种复杂的网络抓取需求。深入理解这些源码,有助于开发者定制自己的爬虫策略,实现特定...
**Lucene 和 Heritrix 源码分析** 在IT领域,搜索引擎的开发是一项复杂而重要的任务,它涉及到大量的文本处理、索引构建以及高效的查询算法。Lucene 和 Heritrix 是两个开源工具,分别专注于搜索的核心算法和网页...
Heritrix 1.14.4是该软件的一个较早版本,包含了完整的源码,因此用户可以对其进行深度定制和调试。 在开始使用Heritrix 1.14.4之前,你需要了解以下几个核心知识点: 1. **爬虫基础**:Heritrix是一个Web爬虫,其...
在"Heritrix 源码和Jar"这个主题中,我们可以深入探讨以下几个知识点: 1. **Heritrix的架构**: Heritrix采用模块化设计,由多个组件构成,包括URL队列管理器、下载器、解析器、存储模块等。用户可以根据需要定制...
Heritrix 3.2 源码的分析和理解有助于开发者深入掌握爬虫技术,定制自己的爬虫解决方案。 首先,让我们了解一下Heritrix 3.2 的核心特性: 1. **模块化设计**:Heritrix 3.2 采用组件化的架构,使得不同的爬取功能...
### Heritrix源码分析知识点概述 #### 一、Heritrix简介 Heritrix是一款开源的网络爬虫工具,由Internet Archive开发并维护。它主要用于网页归档和大规模网络爬取任务。Heritrix的设计理念是高度可配置性和扩展性,...
heritrix1.14.4的源码包,包含heritrix1.14.4.zip和heritrix1.14.4-src.zip。heritrix是一种开源的网络爬虫,用于爬去互联网中的网页。如何配置和使用heritrix爬虫,请移步:...
这个“Heritrix1.14.4源码+项目”压缩包包含的是Heritrix 1.14.4版本的源代码和相关项目文件,对于学习和理解Web爬虫的工作原理,以及进行自定义开发是非常有价值的。 Heritrix的核心功能是通过模拟浏览器行为来...
综上所述,"开发自己的搜索引擎lucene+heritrix(第2版)"的源码涵盖了从网络数据抓取到全文检索的全过程,适合开发者深入学习和实践搜索引擎技术。通过研究ch13至ch16的源代码,可以更深入地理解这两个工具的交互和...
最后,"heritrixProject"很可能包含了Heritrix的配置和源码,用于自定义网络爬取的行为和范围。 总结起来,Lucene和Heritrix是构建高效网络搜索系统的关键组件。Lucene提供强大的全文索引和搜索能力,而Heritrix则...
从网上找得应该是中文Heritrix源码最详细的说明了。折腾了好久,没有把网页打成chm,只能打个exe用用。
源码分析对于理解Heritrix的工作原理至关重要。通过对源码的阅读,我们可以了解其内部架构,包括线程模型、数据流控制和模块间的通信机制。例如,Heritrix采用多线程设计,每个组件如fetcher、parser和archiver都在...
10. **与其他工具集成**:Heritrix可以与其他数据分析、文本挖掘工具集成,如Apache Nutch、Solr、Hadoop等,实现更复杂的网络数据处理流程。 总结来说,Heritrix 1.14.4是一个功能丰富的网络爬虫工具,它的模块化...
### Heritrix爬虫安装部署知识点...通过以上详细介绍,我们不仅了解了Heritrix的基本概念和工作原理,还掌握了其安装部署的详细步骤以及如何运行示例项目。这对于初次接触Heritrix的用户来说是非常有价值的参考资料。
Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,用于抓取和保存网页数据。在IT行业中,爬虫是获取...无论是用于学术研究、数据分析还是网站维护,Heritrix都是一个值得信赖的工具。
以下将详细介绍Heritrix的配置要点。 1. **启动与安装**: 首先,你需要下载Heritrix的源码或预编译的二进制包,根据系统环境进行安装。安装完成后,通过命令行启动Heritrix,如在Java环境中使用`java -jar heritrix...
分析源码中的线程管理和同步机制是学习的重点。 7. **日志和调试**:理解Heritrix的日志系统,以及如何通过日志信息跟踪和调试爬虫运行过程。 **源码分析步骤** 1. **阅读项目结构**:先大致浏览项目目录,了解各...