`
jimmee
  • 浏览: 539921 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通用爬虫框架及heritrix爬虫介绍

阅读更多

第1部分 通用爬虫

1.1 通用爬虫框架介绍

 

1-1描述了通用的爬虫框架,其基本上包括了一个爬虫系统所需要的所有模块。任何一个爬虫系统的设计图,会发现都有一个环路,这个环代表着爬虫大致的工作流程:根据url将对应的网页下载下来,然后提取出网页中包含的url,再根据这些新的URL下载对应的网页,周而复始。爬虫系统的子模块都位于这个环路中,并完成某项特定的功能。

 


 

1- 1 通用爬虫框架描述图

1.1.1DNS Resolver和fetcher

这两个模块是两个非常简单的独立的服务:DNS Resolver负责域名的解析;Fetcher的输入是域名解析后的url,返回的则是该url对应的网页内容。对于任何一次网页的抓取,它都需要调用这两个模块。

对一般的爬虫,两个模块可以做得非常的简单,甚至合并到一起。但是对于性能要求很高的系统,它们可能成为潜在的性能瓶颈。主要原因是无论是域名解析还是抓取,都是很耗时的工作。比如抓取网页,一般的延迟都在一百毫秒级别,如果遇上慢的网站,可能要几秒甚至十几秒,这导致工作线程会长时间的处于阻塞等待的状态。如果希望Fetcher能够达到每秒几千个网页甚至更高的下载,就需要启动大量的工作线程。因此,对于性能要求高的爬虫系统,一般会采用epoll或者类似的技术将两个模块改成异步机制。另外,对于DNS的解析结果也会缓存下来,大大降低了DNS解析的操作。

1.1.2Content Seen

Internet上的一些站点常常存在着镜像网站(mirror),即两个网站的内容一样但网页对应的域名不同。这样会导致对同一份网页爬虫重复抓取多次。为了避免这种情况,对于每一份抓取到的网页,它首先需要进入Content Seen模块。该模块会判断网页的内容是否和已下载过的某个网页的内容一致如果一致则该网页不会再被送去进行下一步的处理。这样的做法能够显著的降低爬虫需要下载的网页数。至于如果判断两个网页的内容是否一致,一般的思路是这样的:并不会去直接比较两个网页的内容,而是将网页的内容经过计算生成FingerPrint(指纹),通常FingerPrint是一个固定长度的字符串,要比网页的正文短很多。如果两个网页的FingerPrint一样,则认为它们内容完全相同。

1.1.3ExtractorUrl Filter

Extractor的工作是从下载的网页中将它包含的所有URL提取出来。这是个细致的工作,你需要考虑到所有可能的url的样式,比如网页中常常会包含相对路径的url,提取的时候需要将它转换成绝对路径。

Url Filter则是对提取出来的URL再进行一次筛选。不同的应用筛选的标准是不一样的,比如对于baidu/google的搜索,一般不进行筛选,但是对于垂直搜索或者定向抓取的应用,那么它可能只需要满足某个条件的url,比如不需要图片的url,比如只需要某个特定网站的url等等。Url Filter是一个和应用密切相关的模块。

1.1.4Url Seen

Url Seen用来做url去重。对于一个大的爬虫系统,它可能已经有百亿或者千亿的url,新来一个url如何能快速的判断url是否已经出现过非常关键。因为大的爬虫系统可能一秒钟就会下载几千个网页,一个网页一般能够抽取出几十个url,而每个url都需要执行去重操作,可想每秒需要执行大量的去重操作。因此Url Seen是整个爬虫系统中非常有技术含量的一个部分。

1.1.5 Url Set

url经过前面的一系列处理后就会被放入到Url Set中等待被调度抓取。因为url的数量很大,所以只有一小部分可能被放在内存中,而大部分则会写入到硬盘。一般Url Set的实现就是一些文件或者是数据库。

1.1.6URL Frontier

Frontier是整个爬虫系统的引擎和驱动,组织和调用其它的模块。当爬虫启动的时候,Froniter内部会有一些种子url,它先将种子url送入Fetcher进行抓取,然后将抓取下来的网页送入Extractor 提取新的url,再将新的url去重后放入到Url Set中;而当Froniter内部的url都已经抓取完毕后,它又从Url Set中提取那些新的没有被抓取过的url,周而复始。

第2部分 Heritrix开源爬虫介绍

通用的爬虫技术目前已经比较成熟,存在较多的开源爬虫框架,本调研报告主要对HeritrixNutch两个比较成熟的java开源爬虫框架进行介绍。

  2.1 Heritrix

Heritrix 是个“Archival Crawler”——来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫主要通过Web用户界面启动、监控和调整,允许弹性的定义要获取的url



 

 

2- 1 Heritrix系统框架图

Web Administrative Console:一个基于web的控制台。

CrawlOrder一个crawl任务的配置。它是一个基XML的对象,Heritrix根据CrawlOrder中的配置,选择合适的模块来组装这次抓取任务的程序。其中,同时它还包括了其他的一些重要的配置信息,例如抓取任务的seeds文件,进行抓取url的范围等

CrawlController:抓取的核心程序,它读取CrawlOrder来配置内部的模块和参数,同时负责初始化所有的子模块;Web Console也是和它做交互来控制爬虫。

Frontier:它其实就是一个调度器,它内部有一个url队列,保存着需要去抓取的url。同时,从网页中提取到的 url也会送给Frontier所以,Frontier还有一个功能,对提取后的url进行去重。最后Froniter进行调度,决定哪个url将被 抓取,然后将这个url放入ToeThreads中;

ToeThreads:这组线程是真正的工作线程,它们完成url的抓取以及一系列的后续工作,如图2-1所示,主要包括:

1Pre-fetch Processing: 在抓取前的一些处理;

2Fetch Processing: 抓取url对应的网页;

3Extractor Processing: 抽取网页中的url,分析网页的信息。

4Write/Index Processing: 将网页保存下来,或者写入某个搜索引擎;

5Post Processing: 后处理;

每一个从Frontier中调度出来的url都需要经历这些步骤。所以,在爬虫的运行过程中,Frontier和这些Processing Chain构成了一个环Frontier将需要处理的url放入Processor Chain中,从Processor Chain中提取出的新的url再被放入Frontier



 

2- 2 heritrix处理一个url的流程

  • 大小: 41 KB
  • 大小: 59.3 KB
  • 大小: 23.4 KB
分享到:
评论
1 楼 游牧民族 2016-05-25  
楼主写的不错,学习了,最近对爬虫比较感兴趣,也写了些爬虫相关的博文教程
欢迎多来交流探讨~
http://youmumzyx.iteye.com/admin

相关推荐

    开发自己的搜索引擎 lucene + heritrix

    Heritrix 是一个开源的网络爬虫框架,由Internet Archive 发起,用于大规模的网页采集。Heritrix 支持各种复杂的抓取策略和规则,如深度优先、广度优先,以及各种过滤器和钩子,能够有效地抓取互联网上的资源。它...

    爬虫技术精髓.docx

    2. Heritrix:是一个开源的爬虫框架,提供了爬虫技术的实现。 3. Apache Tika:是一个开源的文档解析器,提供了文档解析的实现。 4. JSpider:是一个开源的爬虫引擎,提供了爬虫技术的实现。 5. WebSPHINX:是一个...

    HW1.1-PB15111604金泽文1

    本篇将围绕三个主流的开源爬虫框架——Heritrix、Nutch和Scrapy进行深入的调研。 首先,Heritrix是一个由Java编写的开源爬虫框架,它的特点是严格遵循robots.txt协议和META robots标签,确保合法和全面地抓取网站...

    爬虫技术精髓.pdf

    通用爬虫的组成在网络爬虫的系统框架中,主过程由控制器、解析器、资源库三部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些 JS ...

    基于Lucene_Heritrix的垂直搜索引擎的研究与应用

    Heritrix是一款开源的网络爬虫工具,主要用于从互联网上抓取数据。它具有高度的灵活性和可配置性,可以按照用户的需求定制爬取策略。Heritrix的设计考虑到了大规模数据抓取的需求,支持分布式爬取,可以在多台机器上...

    【毕业设计】基于Heritrix的Web信息抽取.doc

    Heritrix是一个开源的、基于Java的Web爬虫框架,能够高效地爬取和抽取Web页面的信息。通过使用Heritrix,可以实现自动化的Web信息抽取,提高信息抽取的准确性和效率。 本文的主要贡献在于提出了一种基于Heritrix的...

    基于heritrix的web信息抽取.doc

    Heritrix提供了一种灵活的框架,允许开发者针对不同的信息抽取需求定制抓取策略。 【Web信息抽取】 Web信息抽取,也称为Web数据挖掘,是从大量网页中提取结构化的有用信息的过程。这一技术对于从非结构化的Web资源...

    基于heritrix的web信息抽取本科论文.doc

    Heritrix的设计理念是提供一个灵活、可扩展的框架,允许开发者根据需要定制和配置爬虫的行为,以适应不同的信息抽取任务。Heritrix支持HTTP、HTTPS等多种协议,可以处理JavaScript、CSS、图片等多种类型的Web内容,...

    论文研究-基于图书搜索引擎爬虫系统的关键技术研究和实现 .pdf

    本文深入探讨了设计和开发网络爬虫过程中的关键技术与难点,并对Heritrix爬虫框架的源码进行了分析,进而定制和扩展了爬虫的Extractor、QueueAssignmentPolicy和过滤器等组件,以实现对异步加载网页的高效抓取,并...

    基于Lucene的新闻搜索系统的设计与实现

    2. **Heritrix**:Heritrix 是一个高度可配置的开源网络爬虫框架,它可以模拟浏览器的行为从互联网上抓取数据。通过对Heritrix进行扩展和优化,可以高效地从多个新闻源抓取最新的新闻信息。 3. **中文分词**:由于...

    前程无忧垂直搜索引擎项目实战

    Heritrix是互联网档案馆开发的一款网络爬虫,用于抓取和保存网页内容。在垂直搜索引擎中,Heritrix负责数据的获取和预处理,它能按照设定的规则遍历网站,抓取指定格式的招聘信息,为后续的索引和搜索提供原始数据。...

    搜索引擎技术分析

    综上所述,通过结合使用Lucene这样的高性能全文搜索引擎和Heritrix这样的网络爬虫工具,可以构建出功能强大、性能优异的搜索引擎应用。这些工具不仅能够高效地处理大量数据,还能提供高度定制化的搜索体验,满足不同...

Global site tag (gtag.js) - Google Analytics