// 应该知道,Nutch查找文件系统是基于Linux系统的机制的,所以提供启动的命令与Linux的Shell命令很相似。
public static void main(String args[]) throws Exception { if (args.length < 1) { // 检查命令行参数是否合法,如果小于1个参数,则给出提示。 System.out.println ("Usage: Crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN N]"); return; }
Configuration conf = NutchConfiguration.create(); // 使用静态类NutchConfiguration创建一个org.apache.hadoop.conf.Configuration实例,可以在Hadoop的源代码中查看到该类的定义(读取hadoop-site.xml配置文件) conf.addDefaultResource("crawl-tool.xml"); // 读取并设置抓取工具的配置文件,可以在nutch-0.9\conf目录下找到crawl-tool.xml文件 JobConf job = new NutchJob(conf); // 抓取任务配置实例的创建
Path rootUrlDir = null; // 初始URLs文件所在的目录,使用Hadoop的org.apache.hadoop.fs.Path类创建目录 Path dir = new Path("crawl-" + getDate()); // 设置默认抓取到网页的存放目录。如果命令行中没有指定-dir 的值就会使用默认的值:crawl-时间。 int threads = job.getInt("fetcher.threads.fetch", 10); // 设置默认抓取工作启动线程数目,默认值为10。 int depth = 5; // 默认抓取工作遍历深度,默认值为5。 int topN = Integer.MAX_VALUE; // 抓取任务抓取网页的数量,默认为最大值。
for (int i = 0; i < args.length; i++) { // 根据读取的命令行,设置抓取工作配置信息。 if ("-dir".equals(args[i])) { dir = new Path(args[i+1]); i++; } else if ("-threads".equals(args[i])) { threads = Integer.parseInt(args[i+1]); i++; } else if ("-depth".equals(args[i])) { depth = Integer.parseInt(args[i+1]); i++; } else if ("-topN".equals(args[i])) { topN = Integer.parseInt(args[i+1]); i++; } else if (args[i] != null) { rootUrlDir = new Path(args[i]); } }
FileSystem fs = FileSystem.get(job); // 根据抓取工作配置JobConf创建一个用来存放抓取到的网页的目录。 if (fs.exists(dir)) { throw new RuntimeException(dir + " already exists."); // 如果该目录已经存在,则发生运行时异常。 }
if (LOG.isInfoEnabled()) { // 登录日志信息 LOG.info("crawl started in: " + dir); LOG.info("rootUrlDir = " + rootUrlDir); LOG.info("threads = " + threads); LOG.info("depth = " + depth); if (topN != Integer.MAX_VALUE) LOG.info("topN = " + topN); }
// 在目录dir下面创建下面5个目录,用来存放,抓取工作过程中不同操作生成的文件或者目录。 Path crawlDb = new Path(dir + "/crawldb"); Path linkDb = new Path(dir + "/linkdb"); Path segments = new Path(dir + "/segments"); Path indexes = new Path(dir + "/indexes"); Path index = new Path(dir + "/index");
Path tmpDir = job.getLocalPath("crawl"+Path.SEPARATOR+getDate()); Injector injector = new Injector(conf); // 根据Configuration conf创建一个Injector实例 Generator generator = new Generator(conf); // 根据Configuration conf创建一个Generator实例 Fetcher fetcher = new Fetcher(conf); // 根据Configuration conf创建一个Fetcher实例 ParseSegment parseSegment = new ParseSegment(conf); // 根据Configuration conf创建一个ParseSegment实例 CrawlDb crawlDbTool = new CrawlDb(conf); // 根据Configuration conf创建一个CrawlDb实例 LinkDb linkDbTool = new LinkDb(conf); // 根据Configuration conf创建一个LinkDb实例 Indexer indexer = new Indexer(conf); // 根据Configuration conf创建一个Indexer实例 DeleteDuplicates dedup = new DeleteDuplicates(conf); // 根据Configuration conf创建一个DeleteDuplicates实例 IndexMerger merger = new IndexMerger(conf); // 根据Configuration conf创建一个IndexMerger实例 // 初始化crawlDb injector.inject(crawlDb, rootUrlDir); // 从rootUrlDir目录中读取初始化URLs,将URLs注入到CrawlDb实体中去 int i; for (i = 0; i < depth; i++) { // 在segment文件中生成抓取工作列表 Path segment = generator.generate(crawlDb, segments, -1, topN, System .currentTimeMillis(), false, false); if (segment == null) { LOG.info("Stopping at depth=" + i + " - no more URLs to fetch."); break; } fetcher.fetch(segment, threads); // 根据配置的线程数开始抓取网页文件 if (!Fetcher.isParsing(job)) { parseSegment.parse(segment); // 解析网页文件 } crawlDbTool.update(crawlDb, new Path[]{segment}, true, true); // 更新CrawlDb } if (i > 0) { linkDbTool.invert(linkDb, segments, true, true, false); // invert links
indexer.index(indexes, crawlDb, linkDb, fs.listPaths(segments)); // 索引过程 dedup.dedup(new Path[] { indexes }); // 复制索引文件 merger.merge(fs.listPaths(indexes), index, tmpDir); // 将索引目录index中的索引文件合并后写入到indexes目录中 } else { LOG.warn("No URLs to fetch - check your seed list and URL filters."); } if (LOG.isInfoEnabled()) { LOG.info("crawl finished: " + dir); } }
|
相关推荐
### Eclipse中编译Nutch-0.9:详解与步骤 #### 核心知识点概览 在本篇文章中,我们将深入探讨如何在Eclipse环境中编译Nutch-0.9,一个开源的网络爬虫项目,用于抓取互联网上的网页信息。文章涵盖的关键知识点包括...
1. **下载Nutch源码**:首先,从Apache官方网站或者镜像站点下载Nutch-0.9的源代码。将下载的源码解压到你想要的工作目录下,例如`C:\nutch\src\nutch-0.9`。 2. **配置环境变量**:打开Cygwin终端,设置必要的环境...
在研究和使用Nutch-2.1源代码时,你可以深入了解搜索引擎的各个组成部分,如爬虫的实现、索引过程的细节、查询处理的算法等,这对于提升自己的搜索引擎技术知识非常有帮助。同时,Nutch也是研究搜索引擎优化(SEO)...
在e盘下面出现nutch-0.9文件夹说明解压成功了.然后环境变量设置为NUTCH_JAVA_HOME=C:\Program Files\Java\jdk1.5.0(也就是说跟JAVA_HOME是相同的).测试nutch是否安装成功,只需要执行以下命令: $cd D:/Downloads/...
安装完上述依赖后,将Nutch的源代码包下载到本地,解压至指定目录,如C:\nutch-0.9。解压后,需要修改nutch-site.xml文件以配置Nutch运行时的相关参数,例如配置抓取的用户代理名称: ```xml <name>...
`apache-nutch-2.3.1-src.tar.gz` 是 Apache Nutch 的源代码包,版本号为 2.3.1,以 tar.gz 格式压缩。 这个压缩包中包含的主要文件和目录结构如下: 1. **src**: 这是 Nutch 的源代码存放位置,分为多个子目录,...
apache-nutch-2.2.1(Eclipse直接运行版)今天刚做的,发现有很多坑,分享给大家实验,JDK1.7 Win10。我分享的两个压缩卷一起下载才可以用,资源限制太小了 002地址:...
在“apache-nutch-1.7-src.tar.gz”这个压缩包中,你将获得Nutch 1.7的源代码,这使得开发者可以深入了解其工作原理,并对其进行定制和扩展。解压后的文件夹“apache-nutch-1.7”包含了所有必要的组件和配置文件。 ...
- **Git**:获取nutch-windows-script项目的源代码。 - **Cygwin**或**Git Bash**:提供类似于Linux的命令行环境。 安装完这些依赖后,你可以按照以下步骤操作: 1. **克隆项目**:使用Git从GitHub上克隆“nutch-...
在这个"apache-nutch-1.4-bin.tar.gz"压缩包中,包含了运行 Nutch 的所有必要组件和配置文件,适合初学者和开发者快速部署和实验。 **Nutch 的核心组成部分:** 1. **爬虫(Spider)**:Nutch 的爬虫负责在网络中...
Nutch 1.16是该项目的一个稳定版本,已经预先编译完成,方便开发者直接在Eclipse或IntelliJ IDEA这样的集成开发环境中导入使用,无需自行配置和编译源代码。 **Nutch的组成部分** 1. **Web爬虫**:Nutch的爬虫负责...
- **配置文件**:Nutch的运行依赖于一系列配置文件,如`conf/nutch-site.xml`,用户可以通过修改这些文件来定制爬虫行为。 - **插件系统**:Nutch支持丰富的插件体系,如URL过滤器、解析器、索引器等,开发者可以...
然后,根据项目需求,可以编辑配置文件(如conf/nutch-site.xml)来定制爬虫行为,如设置爬取策略、抓取频率、存储路径等。 7. **扩展性与集成**: Nutch的设计使其易于与其他系统集成,比如可以与Hadoop结合实现...
nutch-web-api 它是什么 nutch-web-api是 Apache Nutch 爬虫应用程序的 RESTFul API 实现。 这个项目完全是用 node.js 和 coffeescript 编写的,目的是简化使用并提高灵活性。 REST API 不是 apache nutch 应用程序...
这个源码包 "apache-nutch-1.3-src.tar.gz" 和 "nutch-1.3.tar.gz" 包含了 Nutch 1.3 的源代码和编译后的二进制文件,对于开发者和研究者来说是非常有价值的资源。 **Nutch 概述** Nutch 是基于 Java 开发的,遵循 ...
nutch配置nutch-default.xml
这个`apache-nutch-1.6-src.tar.gz`文件包含了Nutch 1.6的源代码,允许开发者深入研究其内部机制,定制自己的爬虫需求,或者为项目贡献代码。 源代码包`apache-nutch-1.6`中通常包含以下几个关键部分: 1. **源...
#### 二、分页代码分析 根据提供的代码片段,我们可以看到这是一段 JSP (Java Server Pages) 代码,用于实现分页功能。该代码主要通过动态生成 HTML 表单来实现页面之间的跳转。接下来我们将逐步解析这段代码。 ##...
通过执行bin/nutch crawl命令,可以开始网页抓取,并在nutch-0.9目录下生成crawl文件夹存储结果。 然后,测试Nutch自带的搜索引擎。将nutch-0.9-war部署到Tomcat服务器上,并对nutch-site.xml进行配置。在运行过程...
接下来,需从官方网站下载Nutch-1.0的源代码压缩包(`nutch-1.0.tar.gz`),并进行解压。随后,在Eclipse中创建一个新的Java项目,命名可自定义,如“Nutch”,并在创建过程中选择“从现有源代码创建项目”选项,...