好的,我给你整理一份 Apache Nutch 1.2 安装与使用指南,适合初学者快速上手 Nutch 做网页爬虫和搜索引擎实验。


Apache Nutch 1.2 安装与使用指南


一、Nutch 简介

  • Apache Nutch 是一个开源的网页爬虫与搜索框架,基于 Java 编写。
  • 特点
    1. 支持 分布式爬取,可扩展到大规模网页抓取。
    2. 内置 URL 过滤、解析器、索引器
    3. 可与 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

  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 的爬取流程通常包括:

  1. 生成种子文件(seed.txt)
    • 内容为初始 URL,每行一个:
http://example.com/
http://apache.org/

  1. 生成 URL 列表
bin/nutch inject crawl/crawldb seed.txt

  • 将种子 URL 注入到爬虫数据库。
  1. 生成 Fetch 列表
bin/nutch generate crawl/crawldb crawl/segments

  • 生成待抓取的 URL 列表(segment)。
  1. 抓取网页
bin/nutch fetch crawl/segments/segment_YYYYMMDDHHMM

  1. 更新爬取状态
bin/nutch parse crawl/segments/segment_YYYYMMDDHHMM
bin/nutch updatedb crawl/crawldb crawl/segments/segment_YYYYMMDDHHMM

  1. 循环爬取
  • 重复 generate → fetch → parse → updatedb,可持续扩展网页爬取深度。

六、索引到 Lucene / Solr

  1. 索引到 Lucene
bin/nutch index crawl/crawldb crawl/segments/*

  1. 索引到 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/*


七、常用配置

  1. crawl-urlfilter.txt
  • 配置允许爬取或排除的 URL:
+^http://example.com/
-^http://example.com/private

  1. 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>


八、调试与优化

  1. 查看日志
tail -f runtime/local/logs/nutch.log

  1. 调节抓取深度
  • db.fetch.interval.default 控制重抓时间间隔
  • 多次循环执行 generate → fetch → parse → updatedb 可加深抓取层级
  1. 代理和 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>


九、总结

步骤命令示例
注入种子 URLbin/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_*
索引到 Solrbin/nutch solrindex http://localhost:8983/solr/collection1 crawl/crawldb crawl/segments/*

Nutch 1.2 的核心就是:注入种子 → 生成抓取列表 → 抓取 → 解析 → 更新 → 索引。通过循环执行这些步骤,即可完成大规模网页爬取和搜索。