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

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

 

总结如下:

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的流程:

 

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的日志记录:

 

 

 

crawldb的状态:

 

说明:

-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输出到文件中查看

 

 

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

 

 

3segments

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

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

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

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

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

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

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

 

每个文件的生成时间:

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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<p>Nutch的创始人是Doug Cutting,他同时也是Lucene、Hadoop和Avro开源项目的创始人。</p><p>Nutch诞生于2002年8月,是Apache旗下的一个用Java实现的开源搜索引擎项目,自Nutch1.2版本之后,Nutch已经从搜索引擎演化为网络爬虫,接着Nutch进一步演化为两大分支版本:1.X和2.X,这两大分支最大的区别在于2.X对底层的数据存储进行了抽象以支持各种底层存储技术。</p><p>在Nutch的进化过程中,产生了Hadoop、Tika、Gora和Crawler Commons四个Java开源项目。如今这四个项目都发展迅速,极其火爆,尤其是Hadoop,其已成为大规模数据处理的事实上的标准。Tika使用多种现有的开源内容解析项目来实现从多种格式的文件中提取元数据和结构化文本,Gora支持把大数据持久化到多种存储实现,Crawler Commons是一个通用的网络爬虫组件。</p><p>大数据这个术语最早的引用可追溯到Nutch。当时,大数据用来描述为更新网络搜索索引需要同时进行批量处理或分析的大量数据集。现在,大数据的含义已经被极大地发展了,业界将大数据的特性归纳为4个“V”。Volume数据体量巨大,Variety数据类型繁多,Value价值密度低,商业价值高,Velocity处理速度快。</p><p>Hadoop是大数据的核心技术之一,而Nutch集Hadoop之大成,是Hadoop的源头。学习Hadoop,没有数据怎么办?用Nutch抓!学了Hadoop的Map Reduce以及HDFS,没有实用案例怎么办?学习NutchNutch的很多代码是用Map Reduce和HDFS写的,哪里还能找到比Nutch更好的Hadoop应用案例呢?</p>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值