在Heritrix中,如果我们需要抓取指定host的网页,需要用到SurtPrefixedDecideRule这个规则。
这里根据Heritrix的文档,解释一下SURT。
SURT全称是Sort-friendly URI Reordering Transform。
目的是将一个URL转换成更方便的格式进行处理。
....
SURT类可以将下面这种形式的URL:
scheme://userinfo@domain.tld:port/path?query#fragment
转换成:
scheme://(tld,domain,:port@userinfo)/path?query#fragment
转换后的格式就称为SURT格式。例如,http://www.baidu.com的SURT格式是http://(com,baidu,www,)
这里()中的内容就是转换的内容。
同时,为了不引起URL的冲突,将"."改成了","。
这样做可以方便处理。
因为,原始的URL的host的层次与人们的常规思维相反。
例如,http://www.ccer.pku.edu.cn。"www","ccer","pku","edu","cn"的范围是从小到大的关系。
而变成SURT格式后是,http://(cn,edu,pku,ccer,www,),范围从大到小。
这样可以帮助我们对URL排序,将同一个范围内的URL聚集到一起(通常只需要对SURT格式的字符串进行比较就可以了)。
最后一个注意点,由于URL的大小写影响不大,所以SURT默认将 所有字母全部转换成小写。
SurtPrefixedDecideRule就是用来判断一个URL的SURT格式是否以某个前缀开头(这些前缀一般是由种子产生的,也可以自己指定前缀的文件)。
SurtPrefixedDecideRule首先根据来源生成一个保存SURT的Set。
然后对每个爬取的URL,先转换成SURT格式,判断是否以Set中的某个SURT开头,根据结果做出accept,pass或reject。
感兴趣的可以自己看看源代码。
(为什么不能发图??)
这里有几个设置属性,默认情况下是从seed直接生成用来判断前缀的Set。
decision: accept或reject,如果不明白的话得了解一下DecideRule的机制。
surts-source-file: 可以指定生成surt Set的URL来源。
seeds-as-surt-prefixes: 是否把种子中的URL作为surt的Set。
surts-dump-file:将用来比较的SURT dump到文件中,主要是调试的时候看一下是否有错误。
also-check-via:是否检查URL的来源。默认为false。
例如。http://blog.csdn.net/是从http://www.csdn.net/上面链接过来的,
就说http://www.csdn.net/是http://blog.csdn.net/的via,就是这里提到的“来源”的意思。
即,如果为true,那么在检查http://blog.csdn.net/的时候,还要检查从http://www.csdn.net/。
rebuild-on-reconfig:在重新配置的时候是否重新生成set。
举几个例子:
假设我们的decision是accept。
1.如果只指定了http://www.foo.org/,那么将会accept所有http://www.foo.org/的URL。但是对于http://foo.org/的页面将会pass。
2.如果指定了http://www.foo.org/和http://foo.org/,那么将会accept所有http://www.foo.org/和http://foo.org/的URL。
3.如果指定了http://foo.org(注意这里没有斜杠,有什么区别大家仔细想一下),那么将会accept所有http://foo.org/和foo.org下的子域名的URL(如,http://www.foo.org/和http://ex.foo.org/)。
分享到:
相关推荐
在Heritrix中,SURT(Sort-friendly URI Reordering Transform)和SurtPrefixedDecideRule是两个关键概念,它们对于高效和准确地抓取目标站点的内容至关重要。 SURT是一种URL规范化和排序的格式,它将URL转换成一种...
Heritrix的这些链结构使得开发者可以根据需要定制复杂的爬虫策略,通过调整和扩展各个链中的处理器,实现对网络内容的精确抓取和处理。无论是处理DNS解析、HTTP请求,还是从各种格式的文档中提取链接,Heritrix的...
在这个过程中,Lucene 和 Heritrix 是两个非常关键的工具,它们分别在搜索引擎的构建中扮演着不同的角色。 首先,Lucene 是一个基于 Java 的开源信息检索库,它为开发者提供了一系列用于构建搜索引擎的工具和接口。...
Heritrix是一个强大的开源网络爬虫工具,专为互联网网页存档设计,由Java编写,由互联网档案馆和北欧国家图书馆共同开发。Heritrix的工作模型基于一个循环过程,包括选择URI、下载内容、分析归档、选择新URI并添加到...
Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,主要用于抓取和保存网页内容。Heritrix 1.14.4是该软件的一个较早版本,但依然具有广泛的适用性,尤其对于学习和研究网络爬虫技术...
本节将详细介绍如何在Eclipse环境中搭建Heritrix,并进行必要的配置,以便能够顺利地启动Heritrix并执行抓取任务。 ##### 2.1 在Eclipse中搭建MyHeritrix工程 1. **新建Java工程** 在Eclipse中新建一个名为`...
在Heritrix网络爬虫中使用PageRank算法是提高网页抓取质量和效率的重要手段。PageRank是Google创始人 Larry Page提出的一种衡量网页重要性的算法,它通过分析网页之间的链接关系来评估网页的重要性。Heritrix是一个...
在Heritrix 3.0和3.1版本中,引入了一个基于Spring-container的配置系统,这使得设置管理更加灵活。此外,3.X版本的另一个显著改变是采用了一种新的模型,允许在同一个作业目录下重启作业,而无需每次都创建新的作业...
在IT行业中,爬虫是获取大量网络数据的重要手段,Heritrix因其灵活性、可扩展性和定制性而备受青睐。标题中的"heritrix1.14.0jar包"指的是Heritrix的1.14.0版本的Java档案文件(JAR),这是运行或构建Heritrix爬虫...
在Eclipse这样的集成开发环境中配置Heritrix源文件,可以方便开发者进行定制化开发、调试和理解Heritrix的工作原理。下面将详细介绍如何在Eclipse中设置Heritrix项目,并解释相关知识点。 首先,确保你已经安装了...
在Eclipse中,用户可以利用Java的强类型系统和丰富的库来增强Heritrix的功能,或者根据项目需求调整其核心算法。 Heritrix的设计基于模块化和可扩展性,它的主要组件包括爬取管道(Crawler Pipelines)、策略...
"Myeclipse下安装说明及常见问题.txt" 文件提供了在MyEclipse集成开发环境中安装和运行Heritrix的步骤和可能遇到的问题的解决方案。MyEclipse是一种强大的Java EE集成开发环境,对Java项目的支持非常全面,因此它是...
在Eclipse中运行Heritrix工程,首先需要确保你已经安装了Java Development Kit (JDK) 和Eclipse IDE。Eclipse是Java应用程序,用于开发Java项目,包括像Heritrix这样的Web应用程序。将Heritrix工程导入到Eclipse中,...
Heritrix的设计初衷是为了满足大规模网页归档的需求,但因其灵活的架构和丰富的API,也被广泛应用于数据挖掘、搜索引擎优化等领域。 #### 二、Heritrix下载、安装与配置 ##### 2.1 下载 - **下载地址**: 通常可以从...
Heritrix 1.14.2 是一个开源的网络爬虫工具,它主要用于抓取互联网上的网页和其他在线资源。这个版本的Heritrix在2007年左右发布,虽然较旧,但它仍然是理解网络爬虫技术的一个重要参考。 Heritrix是一个由Internet...
- **日志和报告**:Heritrix记录详细的日志,用于监控和分析爬行过程,同时提供状态报告,帮助用户了解进度和效果。 总的来说,Heritrix是一个强大的工具,它提供了丰富的配置选项和扩展能力,能满足各种复杂的网页...
总的来说,这些资料提供了全面的Heritrix学习路径,从基础知识到实战经验,再到在Eclipse中的开发配置,对于想要深入理解和使用Heritrix的读者来说,是一套非常有价值的学习资源。通过深入研读并实践这些内容,读者...
在本文中,我们将深入探讨如何安装和配置Heritrix 1.14.4版本,这是一个基于Java的爬虫工具。 首先,我们需要从SourceForge网站下载Heritrix的源代码版本,文件名为`heritrix-1.14.4-src.zip`。选择源代码版本的...
Heritrix是一个强大的开源网络爬虫工具,用于批量抓取互联网上的网页。它提供了一种高效、可配置的方式来收集和...然而,理解和掌握Heritrix的内部机制,如线程管理、数据结构和算法,对于有效利用这个工具至关重要。