linux下nutch的安装配置

时间:2022-05-02 16:11:26

Nutch,一个爬虫或者搜索引擎(加上索引的话)。

现在Nutch的最新版本是Nutch2.1。Nutch所有的版本可在这个网址下载http://archive.apache.org/dist/nutch/,这里使用的是Nutch1.6。


1. 下载Nutch1.6. 到http://archive.apache.org/dist/nutch/下载apache-nutch-1.6-bin.tar.gz。

2. 解压缩。终端  tar -zxvf apache-nutch-1.6-bin.tar.gz

3. 终端下cd到目录  apache-nutch-1.6-bin/runtime/local,下面会有bin  conf   lib  logs   plugins  test 几个文件夹

4. 输入命令   bin/nutch ,如果出现下面的提示,说明nutch可用。可能会出现权限不够的提示,chmod 755 bin/nutch ,付给nutch执行权限。

Usage: nutch [-core] COMMAND
where COMMAND is one of:
  crawl             one-step crawler for intranets
  readdb            read / dump crawl db
  mergedb           merge crawldb-s, with optional filtering
  readlinkdb        read / dump link db
  inject            inject new urls into the database
  generate          generate new segments to fetch from crawl db
  freegen           generate new segments to fetch from text files
  fetch             fetch a segment's pages
  parse             parse a segment's pages
  readseg           read / dump segment data
  mergesegs         merge several segments, with optional filtering and slicing
  updatedb          update crawl db from segments after fetching
  invertlinks       create a linkdb from parsed segments
  mergelinkdb       merge linkdb-s, with optional filtering
  solrindex         run the solr indexer on parsed segments and linkdb
  solrdedup         remove duplicates from solr
  solrclean         remove HTTP 301 and 404 documents from solr
  parsechecker      check the parser for a given url
  indexchecker      check the indexing filters for a given url
  domainstats       calculate domain statistics from crawldb
  webgraph          generate a web graph from existing segments
  linkrank          run a link analysis program on the generated web graph
  scoreupdater      updates the crawldb with linkrank scores
  nodedumper        dumps the web graph's node scores
  plugin            load a plugin and run one of its classes main()
  junit             runs the given JUnit test
 or
  CLASSNAME         run the class named CLASSNAME
Most commands print help when invoked w/o parameters.

Expert: -core option is for developers only. It avoids building the job jar, 
        instead it simply includes classes compiled with ant compile-core. 
        NOTE: this works only for jobs executed in 'local' mode


5. 继续测试,输入bin/nutch crawl会出现crawl的参数形式,Usage: Crawl <urlDir> -solr <solrURL> [-dir d] [-threads n] [-depth i] [-topN N]

其中,

urlDir就是种子url的目录地址

-solr <solrUrl>为solr的地址(如果没有则为空)

-dir 是保存爬取文件的目录

-threads 是爬取线程数量(默认10)

-depth 是爬取深度 (默认5)

-topN 是访问的广度 (默认是Long.max)


6. 配置nutch-site.xml文件。在local/conf目录下找到nutch-site.xml和nutch-default.xml,打开nutch-default.xml,找到

<property>
  <name>http.agent.name</name>
  <value></value>
  <description>HTTP 'User-Agent' request header. MUST NOT be empty - 
  please set this to a single word uniquely related to your organization.

  NOTE: You should also check other related properties:

    http.robots.agents
    http.agent.description
    http.agent.url
    http.agent.email
    http.agent.version

  and set their values appropriately.

  </description>
</property>

将其复制到nutch-site.xml的
<configuration></configuration>中间,并用一个单词表示http.agent.name的value值,最后的结果如下。


<?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>oscar</value>
  <description>HTTP 'User-Agent' request header. MUST NOT be empty - 
  please set this to a single word uniquely related to your organization.

  NOTE: You should also check other related properties:

    http.robots.agents
    http.agent.description
    http.agent.url
    http.agent.email
    http.agent.version

  and set their values appropriately.

  </description>
</property>
</configuration>

这个是Nutch服从Robot协议,所以要改。


7. 添加种子url。在local目录下建文件夹如urls,在urls里面建文件如url,里面加入你要爬取的网站的入口url,如http://www.163.com/

8 配置regex-urlfilter.txt。同样在local/conf下找到regex-urlfilter.txt文件,注释掉最后一行。

# accept anything else
+.
添上你要抓取的网站的域名

# accept anything else
#+.

+^http://([a-z0-9]*\.)*163\.com/

这个很重要! 这是正则表达式匹配,不要写错,上面是163的网站,只要改成你想爬取的网站的域名就行,其它的一个都不要改,除非你很熟悉正则表达式的语法,你可以写自己想爬取的特定url格式,正则表达式可见http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

9. 现在就可以爬取163所有的网页了。 在local目录下新建文件夹163保存爬取内容,选择合适的参数, bin/nutch crawl urls -dir 163 

10. 等爬取完成后,在163的文件夹下会有三个文件夹crawldb linkdb segments,其中crawldb是所有需要爬取的超链接,Linkdb 中存放的是所有超连接及其每个连接的链入地址和锚文本,segments存放的是抓取的页面,以爬取的时间命名,个数不多于爬取的深度,Nutch的爬取策略是广度优先,每一层url生成一个文夹夹,直到没有新的url。在segments有6个文件夹,

crawl_generate : names a set of urls to be fetched(待爬取的url)

crawl_fetch : contains the status of fetching each url(爬取的url的状态)

content : contains the content of each url(页面内容)

parse_text : contains the parsed text of each url(网页的文本信息)

parse_data : contains outlinks and metadata parsed from each url(url解析出来的外链和元数据)

crawl_parse : contains the outlink urls, used to update the crawldb(更信crawldb的外链)


但是这些文夹都是不可读的,以方便存取并在高一层进行检索用。如果想看到具体内容,要使用Nutch定义的读取命令,如下

1)查看crawldb
bin/nutch readdb

linux下nutch的安装配置

选择合适的参数即可。如下


查看url地址总数和它的状态及评分:bin/nutch readdb 163/crawldb/ -stats

linux下nutch的安装配置
导出每个url地址的详细内容:bin/nutch readdb 163/crawldb/ -dump crawldb(导出的地址)

2)查看linkdb
查看链接情况:bin/nutch readlinkdb 163/linkdb/ -url http://www.163.com/
导出linkdb数据库文件:bin/nutch readlinkdb 163/linkdb/ -dump linkdb(导出的地址)

3)查看segments

linux下nutch的安装配置


bin/nutch readseg -list -dir 163/segments/ 可以看到每一个segments的名称,产生的页面数,抓取的开始时间和结束时间,抓取数和解析数。

linux下nutch的安装配置


bin/nutch readseg -dump 163/segments/20090309103156 segdb 导出segments,其中url/segments/20090309103156为一个segments文件夹,segdb为存放转换后的内容的文件夹. 

最后一个命令可能是最有用的,用于获得页面内容,一般会加上几个选项 

bin/nutch readseg -dump  163/segments/20120823201609/ 163_oscar/segments -nofetch -nogenerate -noparse -noparsedata -nocontent 这样得到的dump文件只包含网页的正文信息,没有标记。

linux下nutch的安装配置