一、下载安装nutch 下载地址 http://apache.fayea.com/apache-mirror/nutch/1.7/apache-nutch-1.7-bin.tar.gz 安
一、下载安装nutch
下载地址
http://apache.fayea.com/apache-mirror/nutch/1.7/apache-nutch-1.7-bin.tar.gz
安装
[root@centos data]# cd /data/[root@centos data]# mkdir nutch[root@centos data]# tar -zxvf apache-nutch-1.7-bin.tar.gz
我的是root用户,如果不是的话 [root@centos nutch]# chmod +x apache-nutch-1.7
将nutch加入PATH环境变量中。
[root@centos nutch]# vim /etc/profile
export NUTCH_HOME=/data/nutch/apache-nutch-1.7export PATH=$PATH:$NUTCH_HOME/bin
执行
[root@centos nutch]# nutch Usage: nutch COMMANDwhere COMMAND is one of:
二、 抓取网站
假如我想抓取http://www.amazon.cn/
修改抓取url正则,仅允许抓amazon.cn上的内容。
[root@centos apache-nutch-1.7]# vim conf/regex-urlfilter.txt
修改
# accept anything else+.
为
+^http://([a-z0-9]*/.)*amazon.cn/
如果不限制的话就不需要修改
新建urls目录,用于存放首要抓取的url列表
[root@centos apache-nutch-1.7]# mkdir urls[root@centos apache-nutch-1.7]# vim urls/seed.txt
写入
http://www.amazon.cn/
如果多个的话每一行写一个url
接下来给爬行蜘蛛取个名字
[root@centos apache-nutch-1.7]# vim 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>Liu.Xun Nutch Spider</value></property></configuration>
三、与solr集成
solr安装之前有介绍了
http://my.oschina.net/liuxundemo/blog/208236
1、将nutch的schema替换原solr自带的schema。
2、首先在solr里面新建一个nutch的core。首先复制一份collection1为nutch-core,删掉nutch-core里面的core.properties,然后到solr管理界面去Add Core,名字要和nutch-core文字一致
3、将nutch的schema替换原solr自带的schema
[root@centos solrhome]# cp /data/nutch/apache-nutch-1.7/conf/schema-solr4.xml nutch-core/conf/
4、备份原来的索引schema,用nutch的schema替代
[root@centos solrhome]# cd nutch-core/conf/[root@centos conf]# mv schema.xml schema.xml.bak[root@centos conf]# mv schema-solr4.xml schema.xml
修改schema
[root@centos conf]# vim schema.xml
在<fields></fields>中间加上
<field name="_version_" type="string" stored="true" indexed="true"/>
5、启动solr,抓取数据
[root@centos conf]# cd /data/nutch/apache-nutch-1.7/[root@centos apache-nutch-1.7]# bin/nutch crawl urls -dir towns -depth 10 -threads 10 -topN 10 -solr http://192.168.125.129:8080/solr/nutch-core 放置爬行结果的目录-dir dirnames 设置保存所抓取网页的目录. -depth depth 表明抓取网页的层次深度-delay delay 表明访问不同主机的延时,单位为“秒”-threads threads 表明需要启动的线程数-topN number 在每次迭代中限制爬行的头几个链接数,默认是Integer.MAX_VALUE
6、查看结果
三、nutch命令分享
1.查看crawldb数据库
查看url地址总数和它的状态及评分:bin/nutch readdb crawl/crawldb/ -stats
查看每个url地址的详细内容,导出数据:bin/nutch readdb url/crawldb/ -dump crawldb(导出的地址)
查看具体的url,以163为例:bin/nutch readdb url/crawldb/ -url http://www.163.com/
2.查看linkdb数据库
查看链接情况:bin/nutch readlinkdb crawl/linkdb/ -url http://www.163.com/
导出linkdb数据库文件:bin/nutch readlinkdb crawl/linkdb/ -dump linkdb(导出的地址)
3.查看segments
bin/nutch readseg -list -dir crawl/segments/ 可以看到每一个segments的名称,产生的页面数,抓取的开始时间和结束时间,抓取数和解析数。
bin/nutch readseg -dump crawl/segments/20090309103156 segdb 导出segments,其中crawl/segments/20090309103156为一个segments文件夹,segdb为存放转换后的内容的文件夹
4、nutch命令详解
bin/nutch crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN]
. . Crawl是“org.apache.nutch.crawl.Crawl”的别称,它是一个完整的爬取和索引过程命令。 . . bin/nutch readdb <crawldb> (-stats | -dump <out_dir> | -url <url>) . . Readdb命令是“org.apache.nutch.crawl.CrawlDbReader”的别称,返回或者导出Crawl数据库(crawldb)中的信息。 . . Bin/nutch readlinkdb <linkdb> (-dump <out_dir> | -url <url>) . . readlinkdb是"org.apache.nutch.crawl.LinkDbReader"的别称,导出链接库中信息或者返回其中一个URL信息。 . . bin/nutch injector <crawldb> <urldir> . . injector是"org.apache.nutch.crawl.Injector"的别称,注入新URL到crawldb中。 . . bin/nutch generate <crawldb> <segments_dir> [-topN <num>] [-numFetchers <fetchers>] [-adddays <days>] . . generate是“org.apache.nutch.crawl.Generator”,从Crawldb中抓取新的Segment。 . . bin/nutch fetch <segment> [-threads <n>] [-noParsing] . . fetch是“org.apache.nutch.fetcher.Fetcher”的代称,它负责一个segment的爬取。 . . bin/nutch parse <segment> . . parse是“org.apache.nutch.parse.ParseSegment”的代称,它对一个segment运行ParseSegment。 . . bin/nutch segread <segment> . . segread是"org.apache.nutch.segment.SegmentReader"的代称,它读取并导出Segment数据。 . . bin/nutch updatedb <crawldb> <segment> [-noadditions] . . updatedb是“org.apache.nutch.crawl.CrawlDb”的代称,用fetch过程中获取的信息更新crawldb。 . . bin/nutch invertlinks <linkdb> (-dir segmentsDir | segment1 segment2 ...) . . invertlinks是“org.apache.nutch.crawl.LinkDb”的代称,它用从segment中获取到的信息更新linkdb。 . . bin/nutch index <index> <crawldb> <linkdb> <segment> ... . . index是“org.apache.nutch.indexer.Indexer”的代称,创建一个segment的索引,利用crawldb和linkdb中的数据对索引中的页面打分。 . . bin/nutch dedup <indexes> ... . . dedup是“org.apache.nutch.indexer.DeleteDuplicates”的别名,它segment indexes中去掉重复的页面。 . . . bin/nutch plugin <pluginId> <className> [args ...] . . plugin是“org.apache.nutch.plugin.PluginRepository”的代称,用于从插件库中加载一个插件并执行其主方法。 .