为了研究怎么解决recrawl的问题,今天仔细观察了一下nutch crawl的每一步具体发生了什么。
==============准备工作======================
(Windows下需要cygwin)
从SVN check out代码;
cd到crawler目录;
==============inject==========================
$ bin/nutch inject crawl/crawldb urls
Injector: starting
Injector: crawlDb: crawl/crawldb
Injector: urlDir: urls
Injector: Converting injected urls to crawl db entries.
Injector: Merging injected urls into crawl db.
Injector: done
crawldb目录在这时生成。
查看里面的内容:
$ bin/nutch readdb crawl/crawldb -stats
CrawlDb statistics start: crawl/crawldb
Statistics for CrawlDb: crawl/crawldb
TOTAL urls: 1
retry 0: 1
min score: 1.0
avg score: 1.0
max score: 1.0
status 1 (db_unfetched): 1
CrawlDb statistics: done
===============generate=========================
$bin/nutch generate crawl/crawldb crawl/segments
$s1=`ls -d crawl/segments/2* | tail -1`
Generator: Selecting best-scoring urls due for fetch.
Generator: starting
Generator: segment: crawl/segments/20080112224520
Generator: filtering: true
Generator: jobtracker is 'local', generating exactly one partition.
Generator: Partitioning selected urls by host, for politeness.
Generator: done.
segments目录在这时生成。但里面只有一个crawl_generate目录:
$ bin/nutch readseg -list $1
NAME GENERATED FETCHER START FETCHER END
FETCHED PARSED
20080112224520 1 ? ? ? ?
crawldb的内容此时没变化,仍是1个unfetched url。
=================fetch==============================
$bin/nutch fetch $s1
Fetcher: starting
Fetcher: segment: crawl/segments/20080112224520
Fetcher: threads: 10
fetching http://www.complaints.com/directory/directory.htm
Fetcher: done
segments多了些其他子目录。
$ bin/nutch readseg -list $s1
NAME GENERATED FETCHER START FETCHER END
FETCHED PARSED
20080112224520 1 2008-01-12T22:52:00 2008-01-12T22:52:00
1 1
crawldb的内容此时没变化,仍是1个unfetched url。
================updatedb=============================
$ bin/nutch updatedb crawl/crawldb $s1
CrawlDb update: starting
CrawlDb update: db: crawl/crawldb
CrawlDb update: segments: [crawl/segments/20080112224520]
CrawlDb update: additions allowed: true
CrawlDb update: URL normalizing: false
CrawlDb update: URL filtering: false
CrawlDb update: Merging segment data into db.
CrawlDb update: done
这时候crawldb内容就变化了:
$ bin/nutch readdb crawl/crawldb -stats
CrawlDb statistics start: crawl/crawldb
Statistics for CrawlDb: crawl/crawldb
TOTAL urls: 97
retry 0: 97
min score: 0.01
avg score: 0.02
max score: 1.0
status 1 (db_unfetched): 96
status 2 (db_fetched): 1
CrawlDb statistics: done
==============invertlinks ==============================
$ bin/nutch invertlinks crawl/linkdb crawl/segments/*
LinkDb: starting
LinkDb: linkdb: crawl/linkdb
LinkDb: URL normalize: true
LinkDb: URL filter: true
LinkDb: adding segment: crawl/segments/20080112224520
LinkDb: done
linkdb目录在这时生成。
===============index====================================
$ bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/*
Indexer: starting
Indexer: linkdb: crawl/linkdb
Indexer: adding segment: crawl/segments/20080112224520
Indexing [http://www.complaints.com/directory/directory.htm] with analyzer
org
apache.nutch.analysis.NutchDocumentAnalyzer@ba4211 (null)
Optimizing index.
merging segments _ram_0 (1 docs) into _0 (1 docs)
Indexer: done
indexes目录在这时生成。
================测试crawl的结果==========================
$ bin/nutch org.apache.nutch.searcher.NutchBean complaints
Total hits: 1
0 20080112224520/http://www.complaints.com/directory/directory.htm
Complaints.com - Sitemap by date ?Complaints ...
参考资料:
【1】Nutch version 0.8.x tutorial
http://lucene.apache.org/nutch/tutorial8.html
【2】 Introduction to Nutch, Part 1: Crawling
http://today.java.net/lpt/a/255
[实际写于Jan 13, 12:10 am 2008]
分享到:
相关推荐
`Crawl` 类位于 `org.apache.nutch.crawl` 包中,它包含了启动 Nutch 抓取程序的主要逻辑。`main` 函数是整个程序的入口点,它接收命令行参数并根据这些参数配置 Nutch 的行为。当运行 Nutch 时,你需要提供至少一个...
在Nutch的爬取过程中,每次`nutch crawl`操作都会生成一个新的目录,包含爬取的网页数据、链接数据库(linkdb)、网页数据库(crawldb)和索引文件。当需要将多次爬取的结果合并成一个统一的数据库时,可以使用`...
4. **URL规范化**:确保每个网页只有一个唯一的URL表示,避免重复抓取。 5. **分词与索引**:使用分词器(如 Lucene 提供的中文分词器)将网页内容拆分成词汇,然后构建倒排索引。 6. **存储与更新**:索引会被保存...
4. 执行抓取周期:`bin/nutch crawl -i crawl` 注意,你需要根据实际的数据库连接信息更新 `gora.properties` 文件,例如设置 `db.url`、`db.driver`、`db.username` 和 `db.password`。 在 Nutch 进行抓取时,...
Nutch 还提供了命令行工具,如 `bin/nutch crawl`,用于启动爬虫流程。 **Nutch 入门教程** 《Nutch 入门教程.pdf》这本书籍或文档应该包含了 Nutch 的基础知识、安装配置、使用示例以及常见问题解答等内容。通过...
在Crawl类的`main()`方法中,首先调用`NutchConfiguration.createCrawlConfiguration()`初始化配置,这一步至关重要。`NutchConfiguration`类位于`org.apache.nutch.util`包中,其中的`createCrawlConfiguration()`...
然后,使用`bin/nutch crawl urls -dir crawl -depth 3 -topN 50`命令开始爬行。参数说明: - `-dir`:指定爬行结果的存储目录。 - `-threads`:设定并发抓取的线程数。 - `-depth`:设置爬行深度。 - `-topN`:在每...
bin/nutch crawl urls -dir crawl -depth 2 -topN 10 ``` 这将执行两次抓取(默认深度为1),并返回前10个结果。 **五、集成Hadoop** 如果你希望利用Hadoop分布式计算能力,需进行以下步骤: 1. 配置Nutch的`...
- **运行Nutch流程**:执行`bin/nutch crawl`命令,依次进行抓取、解析、索引等步骤。 - **使用Solr或Elasticsearch**:Nutch可以将索引数据导出到Solr或Elasticsearch,以实现更强大的搜索功能。 - **学习源码**...
bin/nutch crawl urls -dir crawl -depth 3 -topN 50 > crawl.log ``` 以上命令会执行三个深度级别的抓取,并将结果输出到日志文件中。 Nutch会生成一系列的文件夹和文件来存储索引和相关数据,例如: - crawl:...
综上所述,Nutch 1.4在Windows下的安装配置涉及多个环节,包括Java环境搭建、Cygwin的安装、Nutch与Solr的下载与配置等,每一步都需仔细操作以确保系统正常运行。通过以上步骤,用户不仅能够实现对目标网站的自动化...
1. **配置Nutch**: 首先,你需要确保Nutch已经正确安装并且配置完毕,包括设置爬虫的种子URL、配置抓取策略(如Crawl Interval)以及存储路径等。 2. **执行抓取**: 使用Nutch的`bin/nutch crawl`命令启动抓取过程...
深入理解每个配置项的含义,结合源代码,可以实现对 Nutch 的定制化配置,以适应不同的爬取需求。 【版本控制与构建工具】 在 Nutch 的开发过程中,Git 作为分布式版本控制系统,用于管理源代码的版本历史。GitHub ...
- [-depth]:参数用于设定Nutch爬虫迭代的深度,默认值为5,表示爬虫会访问每个页面上的链接,达到预设的层数。 - [-topN]:参数用于限制每次迭代中的记录数,默认值为Integer.MAX_VALUE,代表不做限制。 此外,...
你可以单独运行每个命令,或者通过`bin/crawl`脚本自动化整个过程。 六、Nutch与其他技术的集成 Nutch可以与Solr或Elasticsearch等搜索引擎集成,实现快速高效的搜索功能。此外,还可以与HBase等NoSQL数据库配合,...
"nutch crawl"是指Nutch的爬取流程,它由一系列步骤组成,包括初始化、抓取、解析、过滤、索引等。Nutch提供的这个文件可能是一组预设的脚本或配置,指导用户如何执行完整的爬取流程。这包括设置爬取种子URL、定义...