一、本地模式下nutch1.6爬取
1、创建两个目录,crawl目录存储爬取的数据,urls目录存储爬取的url,并在urls目录中创建一个seed.txt文件,写入需要爬取的url地址。
2、修改./nutch1.6/runtime/local/conf/regex-urlfilter.txt文件的最后一行内容:
将文件的最后一行“+.”改为“+^http://([a-z0-9]*\.)*nutch.apache.org/”
5、将./nutch1.6/runtime/local/conf/nutch-site.xml文件的以下内容改为:
修改前:
<property>
<name>http.agent.name</name>
<value>*</value>
</property>
修改后:
<property>
<name>http.agent.name</name>
<value>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36</value>
</property>
爬取urls目录中定义好的网页信息:
进入./nutch-1.6/runtime/local目录,运行 bin/nutch crawl/data/urls/seed.txt -dir crawl -depth 3 -topN 5
执行完成的结果:
此时在之前创建的crawl目录下有三个目录文件:crawldb、linkdb、segments。
crawldb: 爬行数据库,用来存储所要爬行的网址。
linkdb: 链接数据库,用来存储每个网址的链接地址,包括源地址和链接地址。
segments: 抓取的网址被作为一个单元,而一个segment就是一个单元。
二、分布式模式下运行nutch1.6
1、配置好hadoop环境变量,启动hadoop的所有节点
bin/start-all.sh
2、进入nutch1.6/conf下配置nutch-site.xml
修改后:
<configuration>
<property>
<name>http.agent.name</name>
<value>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36</value>
</property>
</configuration>
1、将url上传到hadoop分布式文件系统中
hadoop fs -mkdir /urls
hadoop fs -copyFromLocal ./runtime/local/urls/seed.txt /urls/
2、设置爬取规则
进入regex-urlfilter.txt文件,修改最后一行内容为:
+^http://([a-z0-9]*\.)*nutch.apache.org/
5、运行ant重新编译
ant
6、进入nutch1.6/runtime/deploy目录运行
bin/nutch crawl /urls/* -dir /home/software/nutch-1.6/crawl/ -depth 3 -topN 5
参数说明:
bin/nutch : nutch1.6的命令
crawl:nutch1.6命令的选项
-dir /home/software/nutch-1.6/crawl/: hadoop分布式文件系统的路径
-depth 3 : 抓取的深度
-topN 5 : 每一次抓取的条数。
出现下图,图一是开始执行时出现的信息,图二、三是获取数据后的信息。