nutch 1.4在windows下的安装配置
0、介绍
Apache Nutch 是用java语言开发的开源网页爬虫程序。使用Nutch可以自动获取网页中的超链接,在检查坏链接,创建遍历过的网页副本以便查询等方面,将会减少大量的维护工作。也由此产生了Apache Solr。Solr是一个开源的全文搜索框架,通过Solr我们可以搜索Nutch遍历过的网页。而且Nutch和Solr的集成十分简易。
Apache Nutch框外支持Solr,这极大地简化了两者的集成。Solr不再依附Apache Tomcat来运行旧的Nutch Web应用,也不再依靠Apache Lucene来建立索引。
1、提前需要安装的工具和软件
1) Jdk 1.7 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html
Nutch是Java开发的所以需要下载安装Java JDK。设置环境变量。
2) Cygwin 下载地址: http://www.cygwin.com/
Nutch的脚本都是用Linux的Shell写的,所以在Windows平台需要一个Shell解释程序。
Cygwin是一个在Windows下的模拟Linux系统程序。
我是下载的setup.exe,选择在线安装。具体的安装过程网上有很多,可以参照。
3) Nutch 1.4 下载地址: http://nutch.apache.org/
后缀名tar.gz为linux系统压缩包,zip为windows系统。
将下载的包,解压到一个盘的根目录下。可修改名称(便于调试进入)。
4) Solr 3.5 下载地址: http://lucene.apache.org/solr/
Solr作用相当于tomcat+webapp。
将下载的包,解压到一个盘的根目录下。
2、验证Nutch的安装
打开cygwin,进入nutch-1.4/runtime/local,例如我把文件解压到d盘,文件名为apache-nutch-1.4,于是命令为:
cd /cygdrive/d/apache-nutch-1.4/runtime/local,cygwin环境下,进入windows某个盘,加cygdrive,cd /cygdrive/d/就相当于进入d盘。在这里你使用命令时,注意路径的正确性。
输入bin/nutch,如果出现命令信息提示(如下图),则路径正确。
3、爬行你的第一个网站
1) 在conf/nutch-site.xml中添加代理名称(agent name)
<configuration>标签间加入如下代码:
<property>
<name>http.agent.name</name>
<value>My Nutch Spider</value>
</property>
2) 在local目录下建立文件夹urls,在文件夹中新建seed.txt,例如添加内容为:
http://www.giftour.com/(如果你想爬行多个网站,每个站点一行)。
注:在使用命令爬行时,会从当前目录下寻找urls文件夹。例如,cygwin提示符的当前目录为nutch-1.4/runtime/local时,使用bin/nutch命令就会从local目录下找寻urls文件夹。
3) 编辑conf下regex-urlfilter.txt,如下将
# accept anything else
+.
替换为:
+^http://([a-z0-9]*\.)*giftour.com/
这表示会遍历giftour.com域名下的所有URL。
4) 开始爬行
bin/nutch crawl urls -dir crawl -depth 3 -topN 5
-参数意义:
-dir 放入爬行信息的目录
-threads 并行运行的爬行线程数
-depth 爬行深度
-topN 每层深度上的最大爬行页面数
运行完后,你会看到crawl 目录下创建了crawdb、linkdb、segments三个文件夹。
PS:关于nutch-1.4爬取时Exception in thread “main” java.io.IOException: Job failed!
此为cygwin编码问题,在cygwin安装目录下找到.bashrc文件,将LANG变量给为"en_US.GBK"即:
export LANG="en_US.GBK"
export LC_ALL="en_US.GBK"(如果没有添加到里面)
重启cygwin。也可以直接输入,export LANG="en_US.GBK",export LC_ALL="en_US.GBK",但好像下次重启cygwin的时候,又变回去了。
再运行nutch命令即可。
4、验证Solr
将下载的solr包解压,cygwin下进入example文件夹,运行命令:
java -jar start.jar
这时会看到solr的启动信息,在浏览器内输入:
http://localhost:8983/solr/admin
http://localhost:8983/solr/admin/stats.jsp
跳转到Admin启动页面,Solr成功开启。
5、整合Solr和Nutch
1) 将NUTCH_RUNTIME_HOME/local/conf目录(NUTCH_RUNTIME_HOME代指相对路径,下面含义相同,例如笔者的为:d/apache-nutch-1.4/runtime/local/conf)下的schema.xml拷到APACHE_SOLR_HOME/example/solr/conf目录下,覆盖掉原来的schema.xml。
2) APACHE_SOLR_HOME/example下,运行命令,java -jar start.jar重启solr。
3) 新建一个cygwin,NUTCH_RUNTIME_HOME/local下运行命令:
bin/nutch solrindex http://127.0.0.1:8983/solr crawl/crawdb -linkdb crawl/linkdb crawl/segments/* (127.0.0.1是回送地址,指本地机)。
4) 浏览器转到 http://localhost:8983/solr/admin ,在搜索框内输入搜索关键字,看到结果。(貌似匹配不怎么智能,未加入中文分词,可以尝试输入数字1,查看搜索结果)。
参考:
http://wiki.apache.org/nutch/NutchTutorial