nutch爬虫技术学习知识点

1、Nutch1.xNutch2.x稳定

① Nutch2.x可以将数据放到HBaseMysql等数据库中,但还在开发阶段

② Nutch1.x基于hdfsSequenceFile文件去存储、管理海量数据;一轮爬取中,将所有的网页都放到content文件夹中,文件夹中存有若干个SequenceFile文件,每一个SequenceFile文件存储的是JAVA对象。

2、Nutch是在Hadoop上运行的

3、Nutch使用Linux Shell进行流程控制

4、Nutch分为几个流程,每一个流程都是由Map Reduce来完成

5、开发工具:IntellijNetbeans可以兼容eclipse项目,也可以开发Nutch

6、Nutch常用的插件:

(1) URL正规化

(2) 正则过滤器

(3) http请求器

(4) 网页解析器

① 抽取网页中的链接,后面被存放到hdfs中,作为待爬取的链接

② 抽取网页中的信息,例如标题、描述,后面被存放到hdfs中,作为索引阶段提交给索引服务器的数据(用作搜索)。

(5) 网页打分

(6) 索引

(7) 。。。。。。。

一般需要修改的是http请求器和网页解析器

7

 


nutch爬取数据的流程

执行”bin/crawl urls data http://xxx.xxx.xxx.xxx:8983/solr 轮数”命令的流程:

循环执行:产生-->抓取-->更新

Generator->Fetcher->ParseSegment->CrawlDb update

 nutch1.9知识点及命令与参数

总结如下:

1) 建立初始 URL

2) URL 集注入 crawldb 数据库---inject

3) 根据 crawldb 数据库创建抓取列表---generate

4) 执行抓取,获取网页信息---fetch

5) 解析抓取的内容---parse segment  

6) 更新数据库,把获取到的页面信息存入数据库中---updatedb

7) 重复进行 35 的步骤,直到预先设定的抓取深度。---这个循环过程被称为“产生/抓取/更新”循环

8) 根据 sengments 的内容更新 linkdb 数据库---invertlinks

9) 建立索引---index

 

抓取完成之后会生成3个数据文件:crawldblinkdbsegments

crawldb: 爬行数据库,用来存储所要爬行的网址。

linkdb: 链接数据库,用来存储每个网址的链接地址,包括源地址和链接地址。

segments: 抓取的网址被作为一个单元,而一个segment就是一个单元。

 

1inject注入url的流程:

 nutch1.9知识点及命令与参数

2crawldb

crawldb中存放的是url地址,第一次根据所给url  :http://blog.tianya.cn进行注入,然后update crawldb 保存第一次抓取的url地址,下一次即depth=2的时候就会从crawldb中获取新的url地址集,进行新一轮的抓取。

 

crawldb中有两个文件夹:current old.  current就是当前url地址集,old是上一次的一个备份。每一次生成新的,都会把原来的改为old

currentold结构相同 里面都有part-00000这样的一个文件夹(local方式下只有1个) 在part-00000里面分别有dataindex两个文件。一个存放数据,一个存放索引

 

 

nutch的日志记录:

 nutch1.9知识点及命令与参数

 nutch1.9知识点及命令与参数

 nutch1.9知识点及命令与参数

crawldb的状态:

 nutch1.9知识点及命令与参数

说明:

-stats命令是一个快速查看爬取信息的很有用的命令:

 

TOTAL urls:表示当前在crawldb中的url数量。

db_unfetched:链接到已爬取页面但还没有被爬取的页面数(原因是它们没有通过url过滤器的过滤,或者包括在了TopN之外被Nutch丢弃)

db_fetched:表示已爬取和索引的页面,如果其值为0,那肯定出错了。

db_redir_tempdb_redir_perm分别表示临时重定向和永久重定向的页面。

db_gone:表示发生了404错误或者其他一些臆测的错误,这种状态阻止了对其以后的爬取工作。

min scoreavg scoremax score是分值算法的统计值,是网页重要性的依据

 

通过-dump参数将抓取到的url输出到文件中查看

 nutch1.9知识点及命令与参数

 

通过-url参数查看具体链接的信息:

 nutch1.9知识点及命令与参数

 

3segments

每一个segments都是一组被作为一个单元来获取的URLsegments是它本身这个目录以及它下面的子目录:

一个crawl_generate确定了将要被获取的一组URL

一个crawl_fetch包含了获取的每个URL的状态;

一个content包含了从每个URL获取回来的原始的内容;

一个parse_text包含了每个URL解析以后的文本;

一个parse_data包含来自每个URL被解析后内容中的外链和元数据;

一个crawl_parse包含了外链的URL,用来更新crawldb

 nutch1.9知识点及命令与参数

每个文件的生成时间:

1.crawl_generateGenerator的时候生成;

2.content,crawl_fetchFetcher的时候生成;

3.crawl_parse,parse_data,parse_textParse segment的时候生成。

 

查看content内容:

bin/nutch readseg -dump ./data/segments/20140111162237 ./data/crawl_tianya_seg_content -nofetch -nogenerate -noparse -noparsedata -noparsetext

查看crawl_fetch内容:

bin/nutch readseg -dump ./data/segments/20140111162237 ./data/crawl_tianya_seg_fetch -nocontent -nogenerate -noparse -noparsedata -noparsetext

查看crawl_generate内容:

bin/nutch readseg -dump ./data/segments/20140111162237 ./data/crawl_tianya_seg_generate -nocontent -nofetch -noparse -noparsedata -noparsetext

查看crawl_parse内容:

bin/nutch readseg -dump ./data/segments/20140111162237 ./data/crawl_tianya_seg_parse -nofetch -nogenerate -nocontent noparsedata noparsetext

查看parse_data内容:

bin/nutch readseg -dump ./data/segments/20140111162237 ./data/crawl_tianya_seg_content -nofetch -nogenerate -noparse -nocontent -noparsetext

查看parse_text内容:

bin/nutch readseg -dump ./data/segments/20140111162237 ./data/crawl_tianya_seg_content -nofetch -nogenerate -noparse -noparsedata -nocontent

 

4.通过readdbtopN参数命令查看按分值排序的url

 

(1) .这里我设定的条件为:前10条,分值大于1

 ./bin/nutch readdb ./data/crawldb -topN 10 ./data/crawldb_topN 1

(2) 不设分值条件,查询前10

 ./bin/nutch readdb ./data/crawldb -topN 10 ./data/crawldb_topN_all_score 

相关文章:

  • 2021-12-20
  • 2021-12-23
  • 2021-05-28
  • 2021-11-03
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
  • 2021-07-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-07
  • 2021-11-16
  • 2022-12-23
  • 2022-02-18
  • 2021-08-16
相关资源
相似解决方案