好的,我给你整理一份 Apache Nutch 1.2 安装与使用指南,适合初学者快速上手 Nutch 做网页爬虫和搜索引擎实验。
Apache Nutch 1.2 安装与使用指南
一、Nutch 简介
- Apache Nutch 是一个开源的网页爬虫与搜索框架,基于 Java 编写。
- 特点:
- 支持 分布式爬取,可扩展到大规模网页抓取。
- 内置 URL 过滤、解析器、索引器。
- 可与 Apache Lucene / Solr 集成做搜索引擎。
注意:Nutch 1.2 是比较老的版本(2008 年左右),有些新特性不支持最新 Hadoop 版本。建议在学习环境或老系统中使用。
二、安装环境准备
1. 系统要求
- 操作系统:Linux / macOS / Windows(需安装 Cygwin)
- Java:JDK 1.5 或以上
- Ant:用于构建 Nutch
- Hadoop(可选):用于分布式爬取
2. 安装 Java 和 Ant
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install openjdk-7-jdk ant
# macOS(Homebrew)
brew install openjdk@7 ant
验证安装:
java -version
ant -version
三、下载 Nutch 1.2
- 官方下载:
- 解压:
tar -xzvf apache-nutch-1.2.tar.gz
cd apache-nutch-1.2
四、构建 Nutch
Nutch 1.2 使用 Ant 构建:
ant runtime
- 构建完成后,会在
runtime/local
目录下生成可执行环境。 runtime/local/bin/nutch
是主要执行脚本。
五、Nutch 基本使用流程
Nutch 的爬取流程通常包括:
- 生成种子文件(seed.txt)
- 内容为初始 URL,每行一个:
http://example.com/
http://apache.org/
- 生成 URL 列表
bin/nutch inject crawl/crawldb seed.txt
- 将种子 URL 注入到爬虫数据库。
- 生成 Fetch 列表
bin/nutch generate crawl/crawldb crawl/segments
- 生成待抓取的 URL 列表(segment)。
- 抓取网页
bin/nutch fetch crawl/segments/segment_YYYYMMDDHHMM
- 更新爬取状态
bin/nutch parse crawl/segments/segment_YYYYMMDDHHMM
bin/nutch updatedb crawl/crawldb crawl/segments/segment_YYYYMMDDHHMM
- 循环爬取
- 重复 generate → fetch → parse → updatedb,可持续扩展网页爬取深度。
六、索引到 Lucene / Solr
- 索引到 Lucene
bin/nutch index crawl/crawldb crawl/segments/*
- 索引到 Solr
- 修改
conf/nutch-site.xml
配置:
<property>
<name>solr.server.url</name>
<value>http://localhost:8983/solr/collection1</value>
</property>
- 执行:
bin/nutch solrindex http://localhost:8983/solr/collection1 crawl/crawldb crawl/segments/*
七、常用配置
- crawl-urlfilter.txt
- 配置允许爬取或排除的 URL:
+^http://example.com/
-^http://example.com/private
- nutch-site.xml
- 配置爬取线程数、抓取深度、代理设置:
<property>
<name>fetcher.threads.per.queue</name>
<value>10</value>
</property>
<property>
<name>db.fetch.interval.default</name>
<value>2592000</value>
</property>
八、调试与优化
- 查看日志
tail -f runtime/local/logs/nutch.log
- 调节抓取深度
db.fetch.interval.default
控制重抓时间间隔- 多次循环执行
generate → fetch → parse → updatedb
可加深抓取层级
- 代理和 User-Agent
- 修改
conf/nutch-site.xml
:
<property>
<name>http.agent.name</name>
<value>MyNutchBot</value>
</property>
<property>
<name>http.proxy.host</name>
<value>proxy.example.com</value>
</property>
<property>
<name>http.proxy.port</name>
<value>8080</value>
</property>
九、总结
步骤 | 命令示例 |
---|---|
注入种子 URL | bin/nutch inject crawl/crawldb seed.txt |
生成抓取列表 | bin/nutch generate crawl/crawldb crawl/segments |
抓取网页 | bin/nutch fetch crawl/segments/segment_* |
解析网页 | bin/nutch parse crawl/segments/segment_* |
更新数据库 | bin/nutch updatedb crawl/crawldb crawl/segments/segment_* |
索引到 Solr | bin/nutch solrindex http://localhost:8983/solr/collection1 crawl/crawldb crawl/segments/* |
Nutch 1.2 的核心就是:注入种子 → 生成抓取列表 → 抓取 → 解析 → 更新 → 索引。通过循环执行这些步骤,即可完成大规模网页爬取和搜索。
发表回复