Robots.txt是一种用于限制网络爬虫的文件,如果在构建网站时,在站点内放置一个Robots.txt文件,在其中可以声明不希望搜索引擎访问的部分。然而,这也是Heritrix爬虫在抓取网页时花费过多的时间去判断该Robots.txt文件是否存在。。。好在这个协议本身是一种附加协议,完全可以不遵守。
在Heritrix的org.archive.crawler.prefetch.PreconditionEnforcer类中定义了获取Robots.txt的方法,我的选择是无论Robots.txt是否存在,都返回不存在,修改方法如下
private boolean considerRobotsPreconditions(CrawlURI curi) {
//此处为提高抓取效率,将忽略Robots.txt协议
return false;
// treat /robots.txt fetches specially
/*UURI uuri = curi.getUURI();
try {
if (uuri != null && uuri.getPath() != null &&
curi.getUURI().getPath().equals("/robots.txt")) {
// allow processing to continue
curi.setPrerequisite(true);
return false;
}
}
catch (URIException e) {
logger.severe("Failed get of path for " + curi);
}
// require /robots.txt if not present
if (isRobotsExpired(curi)) {
// Need to get robots
if (logger.isLoggable(Level.FINE)) {
logger.fine( "No valid robots for " +
getController().getServerCache().getServerFor(curi) +
"; deferring " + curi);
}
// Robots expired - should be refetched even though its already
// crawled.
try {
String prereq = curi.getUURI().resolve("/robots.txt").toString();
curi.markPrerequisite(prereq,
getController().getPostprocessorChain());
}
catch (URIException e1) {
logger.severe("Failed resolve using " + curi);
throw new RuntimeException(e1); // shouldn't ever happen
}
return true;
}
// test against robots.txt if available
CrawlServer cs = getController().getServerCache().getServerFor(curi);
if(cs.isValidRobots()){
String ua = getController().getOrder().getUserAgent(curi);
if(cs.getRobots().disallows(curi, ua)) {
if(((Boolean)getUncheckedAttribute(curi,ATTR_CALCULATE_ROBOTS_ONLY)).booleanValue() == true) {
// annotate URI as excluded, but continue to process normally
curi.addAnnotation("robotExcluded");
return false;
}
// mark as precluded; in FetchHTTP, this will
// prevent fetching and cause a skip to the end
// of processing (unless an intervening processor
// overrules)
curi.setFetchStatus(S_ROBOTS_PRECLUDED);
curi.putString("error","robots.txt exclusion");
logger.fine("robots.txt precluded " + curi);
return true;
}
return false;
}
// No valid robots found => Attempt to get robots.txt failed
curi.skipToProcessorChain(getController().getPostprocessorChain());
curi.setFetchStatus(S_ROBOTS_PREREQUISITE_FAILURE);
curi.putString("error","robots.txt prerequisite failed");
if (logger.isLoggable(Level.FINE)) {
logger.fine("robots.txt prerequisite failed " + curi);
}*/
//return true;
}
分享到:
相关推荐
策略定义了爬虫的行为规则,比如遵循或不遵循robots.txt,或者如何处理重定向。处理器则处理每个页面的具体细节,如提取链接、解析内容等。最后,存储器负责保存抓取到的数据,可能包括本地硬盘、数据库或者远程...
- 法律和道德考虑:遵守网站的robots.txt文件规定,尊重网站的抓取策略,避免对目标网站造成过大的负载。 总的来说,Heritrix-1.4.4是用于构建自定义网络抓取应用的强大工具,结合MyEclipse可以提供一个便捷的开发...
Heritrix 1.14.2 是一个开源的网络爬虫工具,它主要用于抓取互联网上的网页和其他在线资源。这个版本的Heritrix在2007年左右发布,虽然较旧,但它仍然是理解网络爬虫技术的一个重要参考。 Heritrix是一个由Internet...
Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发并维护,主要用于大规模网页抓取。在“heritrix-1.12.1.zip”这个压缩包中,用户可以找到Heritrix的1.12.1版本的源代码和其他相关...
4. **Politeness**:这是Heritrix遵循的一种网络礼貌原则,即在抓取过程中,尊重网站的Robots协议,避免过于频繁的请求,以免对目标服务器造成过大的负担。这通过设置延迟时间和重试策略来实现。 Heritrix的灵活性...
"heritrix"是软件的名称,而"robot"则暗示了Heritrix在网络中的角色类似于网络机器人或蜘蛛,遵循robots.txt协议,尊重网站的抓取规则。 压缩包中的文件名"heritrix-1.12.1"可能包含了Heritrix的源代码、编译后的二...
Heritrix 3.x 是一个开源且高度可扩展的网络爬虫工具,旨在按照robots.txt文件的规则和META robots标签来规范地抓取互联网资源。它由Internet Archive(IA)开发,目标是创建一个用于构建网络数字图书馆的全网归档...
开发自己的搜索引擎-Lucene+Heritrix>>完整版 pdf 文档,共分为两个压缩文件,请全部下载解压。
标题中的“jsmartco_zh_CN+je-analysis-1.4.0+lucene-core-2.0.0+heritrix.14.4”表明这是一个关于搜索引擎开发的资源集合,主要包括了jsmartco中文版、je-analysis 1.4.0、lucene核心库2.0.0以及Heritrix爬虫14.4...
Heritrix是一个开源,可扩展的web爬虫项目。用户可以使用它来从网上抓取想要的...Heritrix设计成严格按照robots.txt文件的排除指示和META robots标签。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
10. **合规性和道德规范**:Heritrix支持robots.txt协议,尊重网站的爬虫规则,并提供设置以避免对服务器造成过大的负载。 通过阅读"docs"目录下的文档,用户能够深入理解Heritrix的各个方面,从基本概念到高级技巧...
Heritrix.properties文件中的其他配置项也很重要,例如`heritrix.jobsdir`定义了工作目录,`heritrix.cmdline.run`、`heritrix.cmdline.nowui`等决定了Heritrix的启动行为。这些配置可以按照需求进行调整。 最后,...
Heritrix设计成严格按照robots.txt文件的排除指示和META robots标签。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。 Heritrix是一个爬虫框架,其组织结构如图2.1所示,包含了整个组件和抓取流程:...
- **启动Heritrix**:打开命令行界面,导航至Heritrix解压后的目录,运行`java -jar heritrix.jar`命令启动服务。 ### 知识点三:Heritrix基本使用流程 #### 1. 创建新任务 - 在Heritrix主界面上创建一个新的爬取...
3. **Heritrix运行与配置**:在`Heritrix1/src/org/archive/crawler/Heritrix.java`文件中启动Heritrix后,服务会在本地的8089端口监听。通过访问`https://localhost:8089`,我们可以使用内置的Web管理界面进行配置...
- 修改`heritrix.properties`中的相关配置,如`heritrix.cmdline.admin`。 - 运行Heritrix应用并验证功能。 #### 三、Heritrix工作原理 Heritrix的工作原理基于深度优先搜索算法,其核心流程包括: 1. **爬取任务...
heritrix.cmdline.admin = admin:admin heritrix.cmdline.port = 8080 ``` - 编辑`jmxremote.password.template`文件,将其中的模板文本替换为实际密码: ```properties monitorRole admin controlRole ...