爬虫调研II:Nutch的工作流程和扩展性
2009-12-24 17:19
204 查看
Nutch
的工作流程
Nutch
的工作流程可以分为两个大的部分:抓取部分与搜索部分。抓取程序抓取页面并把抓取回来的数据进行反向索引,搜索程序则对反向索引进行搜索回答用户的请求,索引是联系这两者的纽带。
I. create db
建立并初始化的
WebDB
。
webDB
用于存储的
URL
和页面内容。
webDB
包括
crawldb
和
linkdb
。
crawldb
就是
Page
通过描述网络上一个网页的特征信息来表征实际的网页,通过网页
URL
和网页内容的
MD5
两种索引方法对这种网页实体进行索引。
crawldb
存储了
nutch
所知道的所有所有页面的
url
,以及
url
是否爬过,什么时候爬过,重要度等信息。
linkdb
包括每个
url
页面中所有
link
,以及它们的“链接名”。
II. inject db 将初始的
URLs
存入
WebDB
(
crawldb
)数据库。
III. generate db segment
segment
是一个数据结构,是处理
nutch
爬虫处理的一个单元。每个
segment
包括“
fetchlist
”,用于保存尚未爬行的
URLs;
“
fetch output
”保存已经爬行过的页面
;
“
index
”保存了保存页面的
Lucene
格式倒排索引。
这步的作用是根据已有的
URLs
建立新的
segment
,含有要爬行的页面,其他的部分都是空,等待爬行后再进行填写。
segment
实际上是一个文件夹,以产生的日期为文件夹名,其中包括了若干子文件夹。
crawl_generate
是待爬行的
URL
集合。
crawl_fetch
包括每个
URL
爬行的状态。
content
包括每个
url
的页面内容。
parse_text
包括每个
url
的文本内容。
parse_data
包括每个
url
的元数据和外向链接。
crawl_parse
包括了所有的外向链接,用来更新
crawldb
。
IV.
fetch
fetch
根据segment中的fetchlist爬行url,之后会改写segment,填入爬行的内容。可以给fetcher指定URL爬行深度,使用的
thread数量等等。每个线程就是一个fetcher,对应一个fetchlist。指向同一个主机上Web资源的URLs通常被分配到同一个
Fetchlist中,防止过多的Fetchers对一个主机同时进行抓取造成主机负 担过重。另外Nutch遵守Robots Exclusion
Protocol,网站可以通过自定义Robots.txt控制Crawler的抓取。fetch的处理过程是通过内部类FetchThread来运作
的,首先建立若干个FetchListEntry,再从中选出若干Entry进行处理。如果没有标记fetch,则对此url建立初始的一个准备,空的
FetcheOutput,parseText,ParseData等等。如果标记了fetch,则从ProtocolFactory和
ParserFactory中选出适当的protocol处理方法和内容parse方法进行下载和分析处理。
V.updatedb
当
fetch
结束后,可以使用此命令更新
crawldb
。进行下一轮的爬行。
Nutch
的扩展性
Nutch
可以通过添加插件的方式扩展。
nutch-default.xml
指定了
plugin
的目录和
URL
分析类,可以通过覆写
nutch-site.xml
文件来改变默认配置。
plugin
目录中包括若干子目录,比如
parse-html,protocl-http
等等。这些包括页面处理和协议处理的方式。
子目录中的
plugin.xml
和
**.jar
组成了一个插件。
我们也可以通过这种方式添加我们自己的协议处理方式和数据处理方法。
http://starwarriors2009.spaces.live.com/Blog/cns!955289B83D9457F7!154.entry
的工作流程
Nutch
的工作流程可以分为两个大的部分:抓取部分与搜索部分。抓取程序抓取页面并把抓取回来的数据进行反向索引,搜索程序则对反向索引进行搜索回答用户的请求,索引是联系这两者的纽带。
I. create db
建立并初始化的
WebDB
。
webDB
用于存储的
URL
和页面内容。
webDB
包括
crawldb
和
linkdb
。
crawldb
就是
Page
通过描述网络上一个网页的特征信息来表征实际的网页,通过网页
URL
和网页内容的
MD5
两种索引方法对这种网页实体进行索引。
crawldb
存储了
nutch
所知道的所有所有页面的
url
,以及
url
是否爬过,什么时候爬过,重要度等信息。
linkdb
包括每个
url
页面中所有
link
,以及它们的“链接名”。
II. inject db 将初始的
URLs
存入
WebDB
(
crawldb
)数据库。
III. generate db segment
segment
是一个数据结构,是处理
nutch
爬虫处理的一个单元。每个
segment
包括“
fetchlist
”,用于保存尚未爬行的
URLs;
“
fetch output
”保存已经爬行过的页面
;
“
index
”保存了保存页面的
Lucene
格式倒排索引。
这步的作用是根据已有的
URLs
建立新的
segment
,含有要爬行的页面,其他的部分都是空,等待爬行后再进行填写。
segment
实际上是一个文件夹,以产生的日期为文件夹名,其中包括了若干子文件夹。
crawl_generate
是待爬行的
URL
集合。
crawl_fetch
包括每个
URL
爬行的状态。
content
包括每个
url
的页面内容。
parse_text
包括每个
url
的文本内容。
parse_data
包括每个
url
的元数据和外向链接。
crawl_parse
包括了所有的外向链接,用来更新
crawldb
。
IV.
fetch
fetch
根据segment中的fetchlist爬行url,之后会改写segment,填入爬行的内容。可以给fetcher指定URL爬行深度,使用的
thread数量等等。每个线程就是一个fetcher,对应一个fetchlist。指向同一个主机上Web资源的URLs通常被分配到同一个
Fetchlist中,防止过多的Fetchers对一个主机同时进行抓取造成主机负 担过重。另外Nutch遵守Robots Exclusion
Protocol,网站可以通过自定义Robots.txt控制Crawler的抓取。fetch的处理过程是通过内部类FetchThread来运作
的,首先建立若干个FetchListEntry,再从中选出若干Entry进行处理。如果没有标记fetch,则对此url建立初始的一个准备,空的
FetcheOutput,parseText,ParseData等等。如果标记了fetch,则从ProtocolFactory和
ParserFactory中选出适当的protocol处理方法和内容parse方法进行下载和分析处理。
V.updatedb
当
fetch
结束后,可以使用此命令更新
crawldb
。进行下一轮的爬行。
Nutch
的扩展性
Nutch
可以通过添加插件的方式扩展。
nutch-default.xml
指定了
plugin
的目录和
URL
分析类,可以通过覆写
nutch-site.xml
文件来改变默认配置。
plugin
目录中包括若干子目录,比如
parse-html,protocl-http
等等。这些包括页面处理和协议处理的方式。
子目录中的
plugin.xml
和
**.jar
组成了一个插件。
我们也可以通过这种方式添加我们自己的协议处理方式和数据处理方法。
http://starwarriors2009.spaces.live.com/Blog/cns!955289B83D9457F7!154.entry
相关文章推荐
- 爬虫调研II:Nutch的工作流程和扩展性
- Nutch爬虫工作流程及文件格式详细分析
- Nutch爬虫工作流程及文件格式详细分析
- Nutch爬虫工作流程
- Nutch爬虫工作流程及文件格式详细分析
- Nutch爬虫工作流程及文件格式详细分析
- [网摘]Nutch的工作流程
- Nutch工作流程-说明性文档
- 项目代理工作手册II(工作流程+收益分析)——CSDN外包实践(40)
- 项目代理工作手册II(工作流程+收益分析)——CSDN外包实践(40)
- Nutch工作流程
- 分析Nutch的工作流程
- 转:cygwin简单应用及Nutch之Crawler工作流程
- Nutch 一般工作流程
- 搜索引擎—通用爬虫框架及工作流程
- nutch爬虫流程
- 爬虫最基本的工作流程:内涵社区网站为例
- nutch的基本工作流程理解