使用Heritrix进行抓取网页,有半天阅读我之前博客的话,很容易就能够顺利的进行抓取任务,但在抓取过程中可能会遇到:
1 想抓取特定格式/特定要求 的网页
这个要根据具体的网站,才能采取具体的措施。这主要是根据网站编写的时候,它的出度的具体格式。如果是类似<a href="http://www.xxx.xxx.xx...." ..>这样的可以直接指向某个具体的URL,那么添加到URI中的应该是这个完整的URL,如果是去掉了http://www等的前面的内容,而只是简单指向本网站下的某个网页,那么在加入到URI中的时候,要记得加上头使得它是一个完整的网页的URL。根据CCER网站下的网页内容,自己写了个CCERExtractor.java来进行过滤,只抓取符合条件的URL。
package org.archive.crawler.extractor;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.httpclient.URIException;
import org.archive.crawler.datamodel.CrawlURI;
import org.archive.io.ReplayCharSequence;
import org.archive.util.HttpRecorder;
/**
* I ignore the log information.
* @author Administrator
*
*/
public class CCERExtractor extends Extractor{
/**
* if the url starts with http ---- if it is under http://www.pku.edu.cn, not then "not"
* else if matches mailto or javascript ---- "not"
* else ---- "yes"
*/
public static final String pattern_ahref = "<[aA] href=\"([^\"]+)\"";// group(1)
public CCERExtractor(String name){
super(name,"CCER Extractor");
}
public CCERExtractor(String name, String description) {
super(name, description);
}
@Override
protected void extract(CrawlURI curi) {
HttpRecorder hr = curi.getHttpRecorder();
ReplayCharSequence cs = null;
try {
cs = hr.getReplayCharSequence();
} catch (IOException e) {
e.printStackTrace();
}
if(cs == null){
return;
}
String content = cs.toString();
Matcher matcher = Pattern.compile(CCERExtractor.pattern_ahref).matcher(content);
while(matcher.find()){
String newUrl = matcher.group(1);
if(newUrl.startsWith("http")){//find the ccer website
if(newUrl.startsWith("http://www.pku.edu.cn")){// case 1 that matches
createAndAddLinkRelativeToBase(curi, newUrl, Link.NAVLINK_HOP);
}
}else if(!newUrl.toLowerCase().startsWith("mailto") && !newUrl.toLowerCase().startsWith("javascript")){//case 2 that matches. Ignore the mailto and javascript href.
if(newUrl.trim().startsWith("/")){
newUrl = newUrl.trim().substring(1).trim();
}
newUrl = "http://www.ccer.pku.edu.cn/cn/" + newUrl;//" http://www.ccer.pku.edu.cn/cn/ " should be added to the first
createAndAddLinkRelativeToBase(curi, newUrl, Link.NAVLINK_HOP);// make sure that the newUrl is available.
}
}
}
private void createAndAddLinkRelativeToBase(CrawlURI curi, String newUrl, char hopType){
try {
curi.createAndAddLinkRelativeToBase(newUrl, "", hopType);
} catch (URIException e) {
e.printStackTrace();
}
}
}
在modules下的Processor.options下将这个新的解析器加入进去,那么在配置的时候便可以出现这个选项。但是必须注意:
Crawler是严格按照配置的信息来进行抓取的,所以CCERExtractor必须在ExtractorHttp后面。在options里面的位置无所谓,只要放到extractor中即可,没有先后顺序。
2 单线程的困扰(我之前的博客
http://hanyuanbo.iteye.com/blog/788177)
3 机器内存的限制(在run configuration中,设置VM-arguments为-Xmx512m。见附件)
4 robots.txt的限制
这个是“君子协定”的内容,如果不考虑这个限制的话,可以提高抓取的效率(虽然某些网站可能不希望你这样肆无忌惮的抓取它的网站)。这个很简单,只需要把
org.archive.crawler.prefetch.PreconditionEnforcer
中将
private boolean considerRobotsPreconditions(CrawlURI curi) {
...
}
改成
private boolean considerRobotsPreconditions(CrawlURI curi) {
return false;//无论如何都不考虑robots.txt的限制
}
5 有时候配置的时候,那个可选项的下拉菜单没有了!!(在Heritrix的run configuration中,classpath中的user entries中选择右边的advanced,然后选择external folder,选择conf目录即可。见附件)
至此,便开始抓取啦,还是按照之前博客里所说的配置,记得在选择extractor的时候,选择CCERExtractor,并且这个要放在ExtractorHtml后面。抓取过程如下:
- 大小: 100.3 KB
- 大小: 40.3 KB
- 大小: 130.3 KB
- 大小: 78.6 KB
- 大小: 92.1 KB
- 大小: 90.7 KB
- 大小: 56.6 KB
- 大小: 187.7 KB
分享到:
相关推荐
这将使Heritrix抓取的页面以镜像形式保存在本地目录,而非生成ARC存档文件。 - 设置属性:在`Settings`页面,有许多预设组件的值可供调整。每个属性旁边都有问号图标,点击后可查看详细解释。 Heritrix的扩展性...
《Heritrix抓取指南》 Heritrix是一款强大的网络爬虫工具,广泛应用于数据采集和分析。本指南将详细介绍如何利用Heritrix抓取淘宝商城大家电分类下的空调商品信息。 首先,确定我们的目标:抓取淘宝商城空调商品...
对于高级开发者来说,Heritrix的可扩展性允许自定义处理器、策略和过滤器,以实现定制化的网络抓取需求。例如,你可以创建自己的URI选择策略,以决定哪些网页应该被爬取,或者编写自定义的抓取模块,处理特定的网页...
这个“Heritrix+Lucene搜索例子”可能涉及到如何将Heritrix抓取的数据整合到Lucene的搜索框架中,从而实现对网络抓取内容的有效检索。 首先,Heritrix的工作流程包括配置爬虫策略、启动爬虫、抓取网页、存储和归档...
本节将详细介绍如何在Eclipse环境中搭建Heritrix,并进行必要的配置,以便能够顺利地启动Heritrix并执行抓取任务。 ##### 2.1 在Eclipse中搭建MyHeritrix工程 1. **新建Java工程** 在Eclipse中新建一个名为`...
Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,主要用于抓取和保存网页内容。Heritrix 1.14.4是该软件的一个较早版本,但依然具有广泛的适用性,尤其对于学习和研究网络爬虫技术...
Heritrix是一款强大的开源网络爬虫工具,专为大规模、深度网页抓取设计。这款工具由互联网档案馆(Internet Archive)开发,旨在提供灵活、可扩展的网页抓取框架,适用于学术研究、数据挖掘和历史记录保存等多种用途...
Heritrix 3.1.0 是一个强大的网络爬虫工具,主要用于抓取和存档互联网上的网页。这个最新版本的jar包包含了Heritrix的核心功能,为用户提供了一个高效的网页抓取框架。Heritrix的设计理念是模块化和可配置性,使得它...
### Heritrix 3.1 官方指导手册 #### 一、简介 Heritrix 是互联网档案馆...通过上述介绍,我们对 Heritrix 3.0 和 3.1 版本有了较为全面的了解,无论是初学者还是高级用户,都可以从中找到适合自己的功能和应用场景。
Heritrix 1.14.2 是一个开源的网络爬虫工具,它主要用于抓取互联网上的网页和其他在线资源。这个版本的Heritrix在2007年左右发布,虽然较旧,但它仍然是理解网络爬虫技术的一个重要参考。 Heritrix是一个由Internet...
Heritrix是一款开源的互联网档案爬虫工具,由...在深入了解和实践Heritrix 1.14.4的过程中,你不仅会掌握网络爬虫的基本原理和技术,还能提升Java编程和项目管理能力,为更高级的Web数据挖掘和分析打下坚实的基础。
本篇将详细解释Heritrix系统的使用、核心概念、工作原理以及关键组件。 首先,Heritrix的安装和配置涉及到几个主要步骤。用户需要下载Heritrix源码,然后按照提供的指南进行编译和安装。配置主要包括设定爬取范围,...
Heritrix 支持各种复杂的抓取策略和规则,如深度优先、广度优先,以及各种过滤器和钩子,能够有效地抓取互联网上的资源。它能够处理大规模的网页抓取任务,并支持对抓取内容的归档管理。 综合Lucene和Heritrix,...
Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,用于抓取和保存网页数据。在IT行业中,爬虫是获取大量网络数据的重要手段,Heritrix因其灵活性、可扩展性和定制性而备受青睐。标题...
Heritrix是一款开源的网络爬虫软件,专为大规模网页抓取而设计。这款工具主要用于构建互联网档案馆、搜索引擎的数据源以及其他需要大量网页数据的项目。Heritrix由Internet Archive开发,支持高度可配置和扩展,能够...
Heritrix是一款开源的网络爬虫工具,由互联网档案馆(Internet Archive)开发,用于抓取和保存网页。它的配置是整个爬虫工作的关键,确保Heritrix正确完整地配置对于实现高效、有针对性的网络抓取至关重要。以下将...
Heritrix爬虫框架是一款基于Java开发的开源网络爬虫工具,专为互联网资源的抓取而设计。这款强大的框架以其高度的可扩展性和灵活性著称,允许开发者根据实际需求定制爬取策略,从而实现对特定网站或网络内容的深度...
Heritrix抓取的数据需要经过预处理,比如去除HTML标签、提取关键词等,才能适配Lucene的索引格式。而Lucene的查询结果通常包含文档ID,这些ID需要映射回原始的网页URL,以便用户查看搜索结果的完整内容。 总之,...
Heritrix是互联网档案(Internet Archive)开发的一款开源网络爬虫工具,用于系统地抓取、存储和归档网页。这个“Heritrix源码”压缩包可能包含了Heritrix项目的完整源代码,以及相关的学习资料,对于深入理解...
Heritrix 3.1是互联网档案馆开发的一款开源网络爬虫工具,专门用于抓取和保存网页。这款强大的爬虫软件广泛应用于学术研究、数据分析、网站备份等多个领域。了解Heritrix 3.1的默认配置以及类之间的关系对于有效使用...