文档章节

第一章 Nutch印象

hiqj
 hiqj
发布于 2014/04/18 16:08
字数 1191
阅读 7
收藏 0

第一章 Nutch印象

Nutch是什么

NutchApache旗下的Java开源项目,最初是一个搜索引擎,现在是一个网络爬虫。Nutch1.3就是Nutch从搜索引擎到网络爬虫的转折点。

下图为项目发起人

图1

Nutch的目标

Nutch 致力于让每个人很容易,同时花很少的钱就可配置世界一流的Web搜索引擎。

Nutch的特性

  • 插件架构,高度模块化

    大多数功能可通过插件来实现和改变

  • 易扩展,极强的伸缩性

    当爬虫获取了上万条甚至更多数据时,很有可能一台机器装不下,那么,我们需要增加机器来存储和计算。不用修改代码,从一台可扩展到上千台

  • 高可用性,健壮容错

    容忍宕机情况的出现。

  • 灵活可配置

    配置文件注释全面,选项多。提供了162个配置参数。

Nutch的设计初衷

商业搜索引擎不开源,搜索结果不仅仅是根据网页本身的价值进行排序,而是有众多商业利益考虑。Nutch提供了开源的解决方案,帮助人们根据自己的需要构建自己的搜索引擎,为用户提供优质的搜索结果,并能从一台机器扩展到成百上千台。

我们学习的主要目的

通过Nutch爬取邮箱账号,联系方式等信息。

第二章 Nutch的安装配置

第三章 Nutch搜索引擎原理

Nutch作为一个搜索引擎,基本组成包括:爬虫、索引、搜索三部分。

Nutch爬虫的设计着重两个方面:存储与爬虫过程。

Nutch爬虫有两种方式

1、爬行企业内部网(Intranet crawling)。针对少数网站进行,用crawl 命令。

2、爬行整个互联网。 使用底层的 inject, generate, fetch updatedb 命令,具有更强的可控制性。

Nutch工作流程

图2

首先根据crawldb生成一个待抓取网页的URL集合——预抓取列表,接着下载线程Fetcher类开始根据预取列表进行网页抓取。如果下载线程有很多个,那么就生成很多个预取列表,也就是一个Fetcher类的线程对应一个预抓取列表。爬虫根据抓取回来的网页更新crawlDB,根据更新后的crawlDB生成新的预取列表。接着下一轮抓取循环重新开始。这个循环过程可以叫做"产生/抓取/更新"循环。

详细介绍工作流程

  1. 通过inject命令将起始 URL 集合注入到 Nutch 系统之中,指定存放预抓取列表的crawldb文件夹

    如我们对广州赶集网进行抓取:

    [root@master local]# bin/nutch inject data-ganji/crawldb urls/url-ganji.txt

    首先通过inject命令将起始urlhttp://gz.ganji.com/注入到Nutch系统中,作为抓取过程的入口点,系统生成crawldb文件夹,用于存放预抓取列表url

    Crawldb文件夹: 存放下载的URL,以及下载的日期,和页面更新检查时间。

    图3

  2. 2、通过generate命令产生抓取列表,生成segments/crawl_generate文件夹

    [root@master local]# bin/nutch generate data-ganji/crawldb data-ganji/segments

    crawl_generate文件夹:存放待下载的URL的集合。

    图4

比较crawldbcrawl_generate的区别

图5

3、通过fetch命令抓取网页,生成contentcrawl_fetch文件夹

[root@master local]# bin/nutch fetch data-ganji/segments/20140301160521/ -threads 2

content文件夹:存放下载页面的内容

图6

图7


Crawl_fetch文件夹:存放下载URL的状态内容

图8

比较Crawldbcrawl_generatecrawl_fetch的区别:

图9

4、ontent文件夹parse命令作用下产生crawl_parseparse_dataparse_text文件夹

[root@master local]# bin/nutch parse data-ganji/segments/20140301160521/

crawl_parse文件夹:存放用来更新crawldb的外部链接库

图10

parse_data文件夹:存放每个URL解析出来的外部链接和元数据

图11

parse_text文件夹:存放每个解析过的URL的文本内容

图12

图13

5、更新crawldb文件夹

更新crawldb文件夹之前,先查看crawldb当前状态

图14

updatedb命令更新crawldb文件夹

[root@master local]# bin/nutch updatedb data-ganji/crawldb -dir data/segments/

查看更新后crawldb文件夹状态

图15

继续下一轮抓取网页,继续“产生/抓取/更新”循环操作。

6通过invertlinks命令产生linkdb文件夹

Linkdb文件夹:存放URL的关联关系,是下载完成后分析时创建的,通过这个关联关系可以实现类似googlepagerank功能。

[root@master local]# bin/nutch invertlinks data-ganji/linkdb -dir data-ganji/segments/

图16

7、生成索引

附:

Nutch抓取流程图

图17

© 著作权归作者所有

hiqj
粉丝 24
博文 208
码字总数 92586
作品 0
渝北
程序员
私信 提问
Nutch+solr+mmseg4j集成

第一章 安装配置solr4.2 #下载solr4.2.0版本 [root@nutch nutch2]# wget http://archive.apache.org/dist/lucene/solr/4.2.0/solr-4.2.0.tgz #解压solr4.2.0文件 [root@nutch nutch2]# tar -......

hiqj
2014/04/18
51
0
将nutch2.3的bin/crawl脚本改写为java类

将nutch2.3的bin/crawl脚本改写为java类 标签: nutch [TOC] nutch1.8以后,以前的主控代码类没了,只剩下对应的控制脚本,感觉在IDEA里面调试不方便,所以我了解了下shell脚本,根据nutch2....

brianway
2016/01/19
1.5K
0
Hadoop基础教程之初始Hadoop

Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身。 《Hadoop基础教程》是我读的第一...

不用真名可好
2016/05/24
114
1
Apache Nutch 1.2 Released

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 Apache Nutch 1.2 包含了不少的改进和bug修复,详情请看 CHANGES 文件。 你...

红薯
2010/09/25
2.5K
4
nutch搜索引擎的搭建以及配置

最近公司需要搭建一个搜索引擎,于是就发现了apache旗下的这个nutch,也看了不少的文章,就在本地搭建了一个进行测试,发现局域网抓取还是比较好的,但是在互联网抓取还是有点问题,像百度、谷歌这...

dh_
2014/04/06
333
0

没有更多内容

加载失败,请刷新页面

加载更多

一分快3走势规律技巧一分快3顺口溜公式

小夏QV:46~39~82~76 :包含与数字运算有关的类。 常用静态方法 abs():取绝对值,Math.abs(-100)=100 floor():向下取值,Math.floor(10.7)=10 round():四舍五入. Collections类:addAll(Col...

上官的如风
28分钟前
52
0
通过SSH传输文件[关闭]

我正在命令行上SSH到远程服务器,并尝试使用scp命令将目录复制到我的本地计算机上。 但是,远程服务器返回此“使用”消息: [Stewart:console/ebooks/discostat] jmm% scp -p ./styles/usa...

技术盛宴
31分钟前
51
0
Learn to Use CURL Command in Linux With These Examples

What is CURL ? CURL is a tool for data transfer. It is also available as a library for developers and as a CLI for terminal-based use cases. Both have the same engine inside (Tr......

Ciet
49分钟前
59
0
索引相关问题

为什么要使用索引 因为使用索引可以避免全表扫描去查找数据,提升检索效率。 什么样的信息能成为索引 主键、唯一键(使数据具备一定的区分性的字段)都能成为索引。 索引的数据结构 主流的是...

潦草的犀牛
49分钟前
43
0
如何在NSString中添加百分号

我想在数字后加一个百分号。 大概是75%。 我该怎么做? 我试过了: [NSString stringWithFormat:@"%d\%", someDigit]; 但这对我没有用。 #1楼 如果在某些情况下有帮助,则可以使用unicode...

javail
今天
75
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部