`
guoyunsky
  • 浏览: 859850 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:207343
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

Heritrix源码分析(五) 如何让Heritrix在Ecplise等IDE下编程启动

阅读更多

     本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642550

       欢迎加入Heritrix群(QQ):109148319

 

      在Heritrix注释里说Heritrix有三种启动方式,但我感觉只有两种:一种是通过tomcat或者JBOSS或者Jetty等Web容器,还有一种自然就是不通过Web直接编程运行。由于第二种方式更适合调试、研究代码,所以这里就介绍下它的编程启动方式吧....这里贴上示例代码以及注释:

   

import java.io.File;
import javax.management.InvalidAttributeValueException;
import org.archive.crawler.event.CrawlStatusListener;
import org.archive.crawler.framework.CrawlController;
import org.archive.crawler.framework.exceptions.InitializationException;
import org.archive.crawler.settings.XMLSettingsHandler;

public class StartHeritrixByEclipse {

	public static void main(String[] args) throws InterruptedException {
		String orderFile = "D:/heritrix-jobs/startHeritrixByEclipse/order.xml";//order.xml文件路径
		File file = null;	//order.xml文件
		
		CrawlStatusListener listener = null;//监听器
		XMLSettingsHandler handler = null;	//读取order.xml文件的处理器
		CrawlController controller = null;	//Heritrix的控制器
		try {
			file=new File(orderFile);
			handler = new XMLSettingsHandler(file);
			handler.initialize();//读取order.xml中的各个配置

			controller = new CrawlController();//
			controller.initialize(handler);//从读取的order.xml中的各个配置来初始化控制器

			if (listener != null) {
				controller.addCrawlStatusListener(listener);//控制器添加监听器
			}
			controller.requestCrawlStart();//开始抓取
			
			/*
			 * 如果Heritrix还一直在运行则等待
			 */
			while (true) {
				if (controller.isRunning() == false) {
					break;
				}
				Thread.sleep(1000);
			}
			
			//如果Heritrix不再运行则停止
			controller.requestCrawlStop();

		} catch (InvalidAttributeValueException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InitializationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

 

这里可以发现,其实只要知道一个order.xml路径就可以开始抓取了(同时还要seeds.txt种子文件),至于order.xml如何配置可以查看我前面的博客:http://guoyunsky.iteye.com/admin/blogs/613412

   

 更多技术文章、感悟、分享、勾搭,请用微信扫描:

    

8
1
分享到:
评论
7 楼 markos_xju 2014-08-07  
6 楼 lyj57 2014-01-07  
你好!有没有类似的用java代码控制爬取工作暂停或继续的代码啊?
5 楼 luoluowushengmimi 2012-04-16  
您好。我看了您的帖子很是受益,不过还是遇到了问题,还望您多多指教。

我用了您写的代码,然后自己写了一个seed 文件,并且自己写了一个order.xml文件,运行的时候报错了。

报错是
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.httpclient.HttpState.setCookiesMap(Ljava/util/SortedMap;)V
at org.archive.crawler.fetcher.FetchHTTP.configureHttpCookies(FetchHTTP.java:1275)
at org.archive.crawler.fetcher.FetchHTTP.configureHttp(FetchHTTP.java:1232)
at org.archive.crawler.fetcher.FetchHTTP.initialTasks(FetchHTTP.java:1166)
at org.archive.crawler.framework.CrawlController.runProcessorInitialTasks(CrawlController.java:1668)
at org.archive.crawler.framework.CrawlController.requestCrawlStart(CrawlController.java:1011)
at cn.ceode.heritrix.test.StartHeritrixByEclipse.main(StartHeritrixByEclipse.java:30)

您知道这个该怎么解决吗
4 楼 zzzz3621 2011-12-17  
怎么停下来呢?eclipse里结束的话,文件好像会损坏
3 楼 zzzz3621 2011-12-17  
使用旧的job里的order.xml的话,不改任何参数就会全部重抓
2 楼 strawbingo 2010-07-12  
这个比较实用,呵呵
1 楼 crabboy 2010-05-12  
清楚,明白

相关推荐

    heritrix源码

    9. **学习资源**:压缩包中的“Heritrix学习源码和资料”可能包含官方文档、教程、示例代码以及社区讨论等内容,这些资料可以帮助初学者快速上手并深入理解Heritrix的内部机制。 10. **实战应用**:Heritrix不仅...

    Heritrix源码分析11-15.pdf

    ### Heritrix源码分析(十一):Heritrix中的URL——CandidateURI和CrawlURI #### 一、概述 Heritrix是一款开源的网络爬虫工具,它主要用于归档和备份网页数据。Heritrix的设计非常灵活且可扩展性强,能够支持多种...

    Heritrix1.14.4(含源码包)

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

    Heritrix源码分析

    本文将深入探讨Heritrix的源码结构,帮助读者理解其内部工作原理。 首先,我们来了解Heritrix的核心包及其功能: 1. `org.apache.commons.httpclient`:这个包封装了Apache HttpClient库,它是Heritrix获取网页...

    Lucene+Heritrix 源码

    **Lucene 和 Heritrix 源码分析** 在IT领域,搜索引擎的开发是一项复杂而重要的任务,它涉及到大量的文本处理、索引构建以及高效的查询算法。Lucene 和 Heritrix 是两个开源工具,分别专注于搜索的核心算法和网页...

    heritrix3.2源码

    Heritrix 3.2 源码的分析和理解有助于开发者深入掌握爬虫技术,定制自己的爬虫解决方案。 首先,让我们了解一下Heritrix 3.2 的核心特性: 1. **模块化设计**:Heritrix 3.2 采用组件化的架构,使得不同的爬取功能...

    Heritrix 源码和Jar

    在"Heritrix 源码和Jar"这个主题中,我们可以深入探讨以下几个知识点: 1. **Heritrix的架构**: Heritrix采用模块化设计,由多个组件构成,包括URL队列管理器、下载器、解析器、存储模块等。用户可以根据需要定制...

    heritrix的学习-源码分析 1-10

    ### Heritrix源码分析知识点概述 #### 一、Heritrix简介 Heritrix是一款开源的网络爬虫工具,由Internet Archive开发并维护。它主要用于网页归档和大规模网络爬取任务。Heritrix的设计理念是高度可配置性和扩展性,...

    Heritrix在Windows下的运行

    Heritrix是一款开源的网络爬虫...通过以上步骤,你可以在Windows环境下成功运行Heritrix,进行网页抓取和数据分析。不过,请注意,合理合法地使用网络爬虫,尊重网站的robots.txt规则,避免对目标网站造成过大负担。

    heritrix1.14.4源码+项目

    1. **配置与启动**:Heritrix的配置基于XML文件,用户可以根据需求调整爬虫的行为,如设置起始URL、爬取深度、爬取速度等。启动时,它会读取这些配置并初始化爬虫引擎。 2. **爬行策略**:Heritrix支持多种爬行策略...

    heritrix1.14.4源码包

    heritrix1.14.4的源码包,包含heritrix1.14.4.zip和heritrix1.14.4-src.zip。heritrix是一种开源的网络爬虫,用于爬去互联网中的网页。如何配置和使用heritrix爬虫,请移步:...

    Heritrix安装详细过程

    本节将详细介绍如何在Eclipse环境中搭建Heritrix,并进行必要的配置,以便能够顺利地启动Heritrix并执行抓取任务。 ##### 2.1 在Eclipse中搭建MyHeritrix工程 1. **新建Java工程** 在Eclipse中新建一个名为`...

    heritrix-1.14.4爬虫框架及源码

    在学习和使用Heritrix时,开发者需要掌握Java编程语言,因为它是Heritrix的开发语言。同时,熟悉XML配置文件的编写也很重要,因为Heritrix的大部分设置是通过XML配置文件完成的。了解HTTP协议和网页解析技术,如HTML...

    heritrix爬虫安装部署

    - **工程创建**: 在IDE中(如Eclipse)创建一个新的Java工程。 - **源码集成**: - 解压`heritrix-1.14.4-src.zip`和`heritrix-1.14.4.zip`。 - 将源代码文件夹整合进工程中。 - 添加必要的库文件(jar包)至项目的`...

    Heritrix在windows下运行成功

    其在Windows环境下成功运行的过程及配置细节,涉及到了Java环境的搭建、Heritrix软件的安装与配置、以及运行参数的设置,以下是对这些知识点的详细解析: ### 一、Java环境搭建 Heritrix基于Java平台运行,因此...

    网络爬虫Heritrix1.14.4可直接用

    3. **Heritrix运行与配置**:在`Heritrix1/src/org/archive/crawler/Heritrix.java`文件中启动Heritrix后,服务会在本地的8089端口监听。通过访问`https://localhost:8089`,我们可以使用内置的Web管理界面进行配置...

    Heritrix-1.14.4源代码

    5. 编译并运行Heritrix,通常会有一个启动脚本或main方法供你执行爬虫。 通过深入研究Heritrix-1.14.4的源代码,你可以学习到网络爬虫的基本架构,了解HTTP通信、网页解析、链接处理和数据存储等相关技术,这对于...

    很好的heritrix学习资料

    这份资料可能会涵盖Heritrix在企业环境中的具体应用,如数据收集、数据分析前的预处理步骤等,同时也可能涉及Java编程相关的知识,因为Heritrix是用Java编写的,理解其内部机制需要一定的Java基础。 "heritrix学习...

Global site tag (gtag.js) - Google Analytics