软件支持:
SUN JDK1.6以上,Apache-nutch-1.6,hadoop-1.1.2,Apache-ant-1.8.4 Cygwin
需要注意事项:JDK的安装路径不能有空格(比如我的JDK安装在D:\Java\jdk1.6.0_25)。
其它的软件安装路径也最好不要有空格。比如上面用到的东东我都是安装或者解压到D盘根目录。
前天学习了Heritrix爬虫,感觉Heritrix爬虫确实很强大,能够爬到很多东西。但是无法直接构建索引,我希望直接能用Nutch构建的索引,今天就学习了一下Nutch爬虫。
由于Nutch是构建在Hadoop基础上的,而Hadoop是基于Linux环境的,在windows下无法工作的。
按照网上的说法,弄了个Cygwin。下载的Cygwin一直不能正常使用。最后在csdn上下载了一个才能正常使用了。下载地址为:http://download.csdn.net/download/leiajay/4209535
一共4个包,都下载后解压安装就OK了。
接着就是在cygwin中运行Nutch了。我用的是Apache-Nutch-1.6的版本。
将Apache-nutch-1.6解压到D盘根目录下。然后在nutch的根目录下新建一个urls文件夹,在urls文件夹里面新建一个txt文件,里面填入需要抓取的url,比如:http://www.sina.com
然后在cygwin中将目录转到Nutch目录下:
$ cd /cygdrive/d/apache-nutch-1.6
然后键入命令进行抓取:
$ bin/nutch crawl urls -dir data -threads 5 -depth 2
结果报错:
Exception in thread "main" java.io.IOException:Failed to set permissions of path:\tmp\hadoop-ysc\mapred\staging\ysc-2036315919\.staging to 0700
在网上找到是Hadoop的Bug所致。又下载了Hadoop的源代码,用Ant重新构建了一下。 (Ant安装及环境变量的配置挺简单的)然后用新构建好的jar包替换Nutch中用到的Hadoop core的jar包。这个详细的步骤在文章结尾部分的参考资料中有。
Ant构建的过程比较简单,但是我第一次构建就出错了。因为我没有在Cgywin的工作台去构建,而是跑到cmd下构建了。这里是需要注意的。
重新运行Nut的命令。结果报错如下:No Agents listed in "http.agent.name" property。
把nutch的conf目录下的nutch-site.xml进行配置后,抓取正常了!
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <!-- Put site-specific property overrides in this file. -->
- <configuration>
- <property>
- <name>http.agent.name</name>
- <value>nutch</value>
- <description>aaaa</description>
- </property>
- </configuration>
学习过程还是比较顺利的了。重要的参考资料如下:
国内首套Nutch视频:http://yangshangchuan.iteye.com/blog/1837935(这也是学习过程的新发现哦)
Cgywin Nutch报错:http://yangshangchuan.iteye.com/blog/1839784