`

Heritrix 抓取 高级篇

阅读更多
使用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抓取的操作和扩展

    这将使Heritrix抓取的页面以镜像形式保存在本地目录,而非生成ARC存档文件。 - 设置属性:在`Settings`页面,有许多预设组件的值可供调整。每个属性旁边都有问号图标,点击后可查看详细解释。 Heritrix的扩展性...

    heritrix抓取指南

    《Heritrix抓取指南》 Heritrix是一款强大的网络爬虫工具,广泛应用于数据采集和分析。本指南将详细介绍如何利用Heritrix抓取淘宝商城大家电分类下的空调商品信息。 首先,确定我们的目标:抓取淘宝商城空调商品...

    Heritrix使用详解与高级开发应用

    对于高级开发者来说,Heritrix的可扩展性允许自定义处理器、策略和过滤器,以实现定制化的网络抓取需求。例如,你可以创建自己的URI选择策略,以决定哪些网页应该被爬取,或者编写自定义的抓取模块,处理特定的网页...

    Heritrix+Lucene搜索例子

    这个“Heritrix+Lucene搜索例子”可能涉及到如何将Heritrix抓取的数据整合到Lucene的搜索框架中,从而实现对网络抓取内容的有效检索。 首先,Heritrix的工作流程包括配置爬虫策略、启动爬虫、抓取网页、存储和归档...

    网络爬虫Heritrix1.14.4可直接用

    Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,主要用于抓取和保存网页内容。Heritrix 1.14.4是该软件的一个较早版本,但依然具有广泛的适用性,尤其对于学习和研究网络爬虫技术...

    很好的heritrix学习资料

    Heritrix是一款强大的开源网络爬虫工具,专为大规模、深度网页抓取设计。这款工具由互联网档案馆(Internet Archive)开发,旨在提供灵活、可扩展的网页抓取框架,适用于学术研究、数据挖掘和历史记录保存等多种用途...

    heritrix-3.1.0 最新jar包

    Heritrix 3.1.0 是一个强大的网络爬虫工具,主要用于抓取和存档互联网上的网页。这个最新版本的jar包包含了Heritrix的核心功能,为用户提供了一个高效的网页抓取框架。Heritrix的设计理念是模块化和可配置性,使得它...

    heritrix3.1 官方指导手册

    ### Heritrix 3.1 官方指导手册 #### 一、简介 Heritrix 是互联网档案馆...通过上述介绍,我们对 Heritrix 3.0 和 3.1 版本有了较为全面的了解,无论是初学者还是高级用户,都可以从中找到适合自己的功能和应用场景。

    heritrix-1.14.2.zip

    Heritrix 1.14.2 是一个开源的网络爬虫工具,它主要用于抓取互联网上的网页和其他在线资源。这个版本的Heritrix在2007年左右发布,虽然较旧,但它仍然是理解网络爬虫技术的一个重要参考。 Heritrix是一个由Internet...

    Heritrix1.14.4(含源码包)

    Heritrix是一款开源的互联网档案爬虫工具,由...在深入了解和实践Heritrix 1.14.4的过程中,你不仅会掌握网络爬虫的基本原理和技术,还能提升Java编程和项目管理能力,为更高级的Web数据挖掘和分析打下坚实的基础。

    heritrix系统使用.ppt

    本篇将详细解释Heritrix系统的使用、核心概念、工作原理以及关键组件。 首先,Heritrix的安装和配置涉及到几个主要步骤。用户需要下载Heritrix源码,然后按照提供的指南进行编译和安装。配置主要包括设定爬取范围,...

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

    Heritrix 支持各种复杂的抓取策略和规则,如深度优先、广度优先,以及各种过滤器和钩子,能够有效地抓取互联网上的资源。它能够处理大规模的网页抓取任务,并支持对抓取内容的归档管理。 综合Lucene和Heritrix,...

    heritrix1.14.0jar包

    Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,用于抓取和保存网页数据。在IT行业中,爬虫是获取大量网络数据的重要手段,Heritrix因其灵活性、可扩展性和定制性而备受青睐。标题...

    Heritrix(windows版)

    Heritrix是一款开源的网络爬虫软件,专为大规模网页抓取而设计。这款工具主要用于构建互联网档案馆、搜索引擎的数据源以及其他需要大量网页数据的项目。Heritrix由Internet Archive开发,支持高度可配置和扩展,能够...

    heritrix正确完整的配置heritrix正确完整的配置

    Heritrix是一款开源的网络爬虫工具,由互联网档案馆(Internet Archive)开发,用于抓取和保存网页。它的配置是整个爬虫工作的关键,确保Heritrix正确完整地配置对于实现高效、有针对性的网络抓取至关重要。以下将...

    Heritrix爬虫框架 完整版

    Heritrix爬虫框架是一款基于Java开发的开源网络爬虫工具,专为互联网资源的抓取而设计。这款强大的框架以其高度的可扩展性和灵活性著称,允许开发者根据实际需求定制爬取策略,从而实现对特定网站或网络内容的深度...

    Lucene2.0+Heritrix(源代码)

    Heritrix抓取的数据需要经过预处理,比如去除HTML标签、提取关键词等,才能适配Lucene的索引格式。而Lucene的查询结果通常包含文档ID,这些ID需要映射回原始的网页URL,以便用户查看搜索结果的完整内容。 总之,...

    heritrix源码

    Heritrix是互联网档案(Internet Archive)开发的一款开源网络爬虫工具,用于系统地抓取、存储和归档网页。这个“Heritrix源码”压缩包可能包含了Heritrix项目的完整源代码,以及相关的学习资料,对于深入理解...

Global site tag (gtag.js) - Google Analytics