Nutch入门教程一

1.什么是Nutch


Nutch 是一个开源Java 实现的搜索引擎,你可以在这里找到它:nutch.apache.org。
Nutch可分为爬虫(crawler)和查询(searcher)。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。
Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。
        你知道吗?

a.    通过nutch,诞生了hadooptikagora

b.    nutch通过ivy来进行依赖管理(1.2之后)。

c.    nutch是使用svn进行源代码管理的。

d.    lucene、nutchhadoop,在搜索界相当有名。

e.    ant构建之后,生成runtime文件夹,该文件夹下面有deploylocal文件夹,分别代表了nutch的两种                运行方式。

f.    nutch和hadoop是通过什么连接起来的?通过nutch脚本。通过hadoop命令把apache-nutch-1.6.job提交      给hadoopJobTracker

g.    nutch入门重点在于分析nutch脚本文件。


2.Nutch结构








构建完成之后生成 data文件夹里有 crawldb, linkdb segmentsf。


crawldb 里都是url. 分current和old两个 子目录。

linkdb 

segments下第爬一次都会生成一个文件夹,第一步由generator 生成 crawl_generate,第二步crawl_generate生成 content存 网页二进制源代码和crawl_fetch存每个url抓取网页状态,第二步生成 crawl_parse每个url的解析状态, parse_data存页面源数据,parse_text存页面文本。


     Nutch入门教程一_第1张图片


3.安装Nutch


a.没有svn的装svn

svn是常用的版本控制软件。

apt-get install subversion

b.用svn 取到(check out) nutch 1.6

svn co https://svn.apache.org/repos/asf/nutch/tags/release-1.6/

c.nutch 1.6用 ant管理 , 下载完成后 ant 构建。

 

cd release-1.6
apt-get install ant
ant

d.设置 爬的网址

cd runtime/local
mkdir urls
vi urls/url.txt 例并输入http://blog.sina.cn

e.设置agent

vi release-1.6/conf/nutch-site.xml 增加http.agent.name配置。

其中value 是自己的 user agent, 不知道user agent的可以在http的请求头里找到它。



图 2.1


 
  http.agent.name
  你的User Agent
  zpy
然后重新Bulid     在release-1.6目录ant。

f.执行 nutch,试运行看看有没有 异常。  dir是存储位置, depth 是检索深度 100线程 & 是后台执行


nohup bin/nutch crawl urls -dir data -depth 3 -threads 10 &


执行之后看nohup.out这个日至文件,有错误的改错误。

我的提示找不到java path. 我的java path是以单个用户配置, 执行的时候用了root,所以如果你的环境配置过了还提示path问题,可能是用户的原因。



再来一次,可以把depth减小节约测试时间。

nohup bin/nutch crawl urls -dir data -depth 1 -threads 10 &

好了,各种错误排除之后 , nohup.out里终于出现了nutch执行日至。


我们可以通过管道快捷查询nohup.out里的内容,查看各个功能执行的时间:

cat nohup.out | grep elapsed | grep Injector
cat nohup.out | grep elapsed | gep Generator
cat nohup.out | grep elapsed | grep Fetcher
cat nohup.out | grep elapsed | grep ParseSeqment
cat nohup.out | grep elapsed | grep Update
cat nohup.out | grep elapsed | grep LinkDb




4. nutch的一些命令:


crawldb

bin/nutch | grep read
bin/nutch  readdb  data/crawldb  -stats
bin/nutch  readdb  data/crawldb  -dump  data/crawldb/crawldb_dump
bin/nutch  readdb  data/crawldb  -url  http://4008209999.tianyaclub.com/
bin/nutch  readdb  data/crawldb  -topN  10 data/crawldb/crawldb_topN
bin/nutch readdb data/crawldb  -topN 10  data/crawldb/crawldb_topN_m 1


segments

crawl_generate:
bin/nutch readseg -dump data/segments/20130325042858data/segments/20130325042858_dump -nocontent -nofetch -noparse -noparsedata  –noparsetext


crawl_fetch

bin/nutch readseg -dump data/segments/20130325042858 data/segments/20130325042858_dump-nocontent -nogenerate -noparse -noparsedata  –noparsetext


content

bin/nutch readseg -dump data/segments/20130325042858data/segments/20130325042858_dump -nofetch -nogenerate -noparse -noparsedata  –noparsetext


crawl_parse

bin/nutch readseg -dump data/segments/20130325042858data/segments/20130325042858_dump -nofetch -nogenerate -nocontent –noparsedata  –noparsetext


parse_data

bin/nutch readseg -dump data/segments/20130325042858data/segments/20130325042858_dump -nofetch -nogenerate -nocontent -noparse  –noparsetext


parse_text

bin/nutch readseg -dump data/segments/20130325042858data/segments/20130325042858_dump -nofetch -nogenerate -nocontent -noparse  -noparsedata


全部

bin/nutch readseg -dump data/segments/20130325042858data/segments/20130325042858_dump
segments
bin/nutch readseg -list -dir data/segments
bin/nutch readseg -list data/segments/20130325043023
bin/nutch readseg -get data/segments/20130325042858 http://blog.tianya.cn/
linkdb
bin/nutch readlinkdb data/linkdb -url http://4008209999.tianyaclub.com/
bin/nutch readlinkdb data/linkdb -dump data/linkdb_dump


 


 


你可能感兴趣的:(网络爬虫)