续接《Nutch爬虫实验运行及抓取数据分析(一)》:
在分析了WebDB之后,下面我们继续分析Nutch爬虫在对实验网络抓取之后其它的结果文件内容。
Segments
Crawler在抓取中共生成了三个segment,分别存放于segments文件夹下的以时间戳为文件夹名的三个子文件夹下面。每个segment代表Crawler的一次“产生/抓取/更新”循环。Nutch中提供了如下的命令可以清晰的看到segments的简介:
bin/nutch segread -list -dir crawl-tinysite/segments/
命令结果如下所示:
PARSED? STARTED FINISHED COUNT DIR NAME
true 20051025-12:13:35 20051025-12:13:35 1
crawl-tinysite/segments/20051025121334
<divre></divre>
true 20051025-12:13:37 20051025-12:13:37 1
crawl-tinysite/segments/20051025121337
<divre></divre>
true 20051025-12:13:39 20051025-12:13:39 2
crawl-tinysite/segments/20051025121339
TOTAL: 4 entries in 3 segments.
结果中PARSED?列表示的是在抓取之后是否接着进行解析和索引,默认的都是true。但是
如果你利用底层命令进行抓取操作的时候,你可以在抓取之后独立地再另外进行解析和索
引工作,此时此列才会为false。STARTED和FINISHED两列记录的是此循环的开始时间和
结束时间,这些信息可以帮助用户分析那些抓取时间过长的页面是怎么回事。COUNT列代
表的是此segment内包含的被抓取回来的网页数目,例如最后一个segment此列值为2,代表
的是segment中有两个被抓取回来的网页,即C网页和C-dup网页。
但是这些简介信息并不够详细,下面的命令可以可以更清楚的看到单个segment的
详细信息,我们以第一个segment为例:
<divre></divre>
s=`ls -d crawl-tinysite/segments/* | head -1`
bin/nutch segread -dump $s
结果为:
<divre></divre>
Recno:: 0
<divre></divre>
FetcherOutput::
<divre></divre>
FetchListEntry: version: 2
<divre></divre>
fetch: true
<divre></divre>
page: Version: 4
<divre></divre>
URL: http://keaton/tinysite/A.html
<divre></divre>
ID: 6cf980375ed1312a0ef1d77fd1760a3e
<divre></divre>
Next fetch: Tue Nov 01 11:13:34 GMT 2005
<divre></divre>
Retries since fetch: 0
<divre></divre>
Retry interval: 30 days
<divre></divre>
Num outlinks: 0
<divre></divre>
Score: 1.0
<divre></divre>
NextScore: 1.0
<divre></divre>
<divre></divre>
anchors: 1
<divre></divre>
anchor: A
<divre></divre>
Fetch Result:
<divre></divre>
MD5Hash: fb8b9f0792e449cda72a9670b4ce833a
<divre></divre>
ProtocolStatus: success(1), lastModified=0
<divre></divre>
FetchDate: Tue Oct 25 12:13:35 BST 2005
<divre></divre>
<divre></divre>
Content::
<divre></divre>
url: http://keaton/tinysite/A.html
<divre></divre>
base: http://keaton/tinysite/A.html
<divre></divre>
contentType: text/html
<divre></divre>
metadata: {Date=Tue, 25 Oct 2005 11:13:34 GMT, Server=Apache-Coyote/1.1,
<divre></divre>
Connection=close, Content-Type=text/html, ETag=W/"1106-1130238131000",
<divre></divre>
Last-Modified=Tue, 25 Oct 2005 11:02:11 GMT, Content-Length=1106}
<divre></divre>
Content:
<divre></divre>
<?xml version="1.0" encoding="UTF-8"?>
<divre></divre>
<!DOCTYPE html
<divre></divre>
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<divre></divre>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<divre></divre>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<divre></divre>
<head>
<divre></divre>
<title>'A' is for Alligator</title>
<divre></divre>
</head>
<divre></divre>
<body>
<divre></divre>
<p>
<divre></divre>
Alligators live in freshwater environments such as ponds,
<divre></divre>
marshes, rivers and swamps. Although alligators have
<divre></divre>
heavy bodies and slow metabolisms, they are capable of
<divre></divre>
short bursts of speed that can exceed 30 miles per hour.
<divre></divre>
Alligators' main prey are smaller animals that they can kill
<divre></divre>
and eat with a single bite. Alligators may kill larger prey
<divre></divre>
by grabbing it and dragging it in the water to drown.
<divre></divre>
Food items that can't be eaten in one bite are either allowed
<divre></divre>
to rot or are rendered by biting and then spinning or
<divre></divre>
convulsing wildly until bite size pieces are torn off.
<divre></divre>
(From
<divre></divre>
<a href="http://en.wikipedia.org/wiki/Alligator">the
<divre></divre>
Wikipedia entry for Alligator</a>.)
<divre></divre>
</p>
<divre></divre>
<p><a href="B.html">B</a></p>
<divre></divre>
</body>
<divre></divre>
</html>
<divre></divre>
<divre></divre>
ParseData::
<divre></divre>
Status: success(1,0)
<divre></divre>
Title: 'A' is for Alligator
<divre></divre>
Outlinks: 2
<divre></divre>
outlink: toUrl: http://en.wikipedia.org/wiki/Alligator
<divre></divre>
anchor: the Wikipedia entry for Alligator
<divre></divre>
outlink: toUrl: http://keaton/tinysite/B.html anchor: B
<divre></divre>
Metadata: {Date=Tue, 25 Oct 2005 11:13:34 GMT,
<divre></divre>
CharEncodingForConversion=windows-1252, Server=Apache-Coyote/1.1,
<divre></divre>
Last-Modified=Tue, 25 Oct 2005 11:02:11 GMT, ETag=W/"1106-1130238131000",
<divre></divre>
Content-Type=text/html, Connection=close, Content-Length=1106}
<divre></divre>
<divre></divre>
ParseText::
<divre></divre>
'A' is for Alligator Alligators live in freshwater environments such
<divre></divre>
as ponds, marshes, rivers and swamps. Although alligators have heavy
<divre></divre>
bodies and slow metabolisms, they are capable of short bursts of
<divre></divre>
speed that can exceed 30 miles per hour. Alligators' main prey are
<divre></divre>
smaller animals that they can kill and eat with a single bite.
<divre></divre>
Alligators may kill larger prey by grabbing it and dragging it in
<divre></divre>
the water to drown. Food items that can't be eaten in one bite are
<divre></divre>
either allowed to rot or are rendered by biting and then spinning or
<divre></divre>
convulsing wildly until bite size pieces are torn off.
(From the Wikipedia entry for Alligator .) B
可以看到结果中有多个数据块,但是不要弄错,这些数据块都是属于一个网页实
体的,那就是A网页。只不过这些数据块属于不同的种类,是不同的阶段Crawler
所得到的A网页的数据。数据总共是三种:fetch data、raw content和pared content。
Fetch data被放置于FetcherOutput标识段之内,这些data是Crawler在“产生/抓取/更
新”循环的更新阶段为了更新WebDB写入WebDB中的关于A网页的数据。
Raw content被放置于Content标识段之内,是Fetcher从网络上抓取的网页的原始文
本数据,包括了完整的网页头数据和网页体。默认的是通过http协议插件进行下
载此数据。这些数据当你设置nutch拥有网页快照能力的时候被保存。
最后,Raw content被解析模块进行解析生成parsed content,解析模块在Nutch中是
以插件的形式进行实现的,根据下载网页的格式决定利用哪个插件进行解析。
Parsed content被放置于ParseData和ParseText标识段之内,它被用于建立segment的
索引。
Index
我们利用Luke工具来进行Nutch索引的分析。Luke可以查看索引中的单个索引项,
也可以进行关键字查询。下面图3即是本次实验中nutch建立的索引,这些索引存
在于index目录之下。
图3 利用Luke查看Nutch的index
上篇文章说过最终的索引是通过对segments的索引进行合并和除去重复建立的,
所以你可以利用Luke来查看最后一个segment的索引你会发现,索引中并没有
C-dup网页,因为其内容与C网页重复已经在索引建立的过程中被移除。于是,
最终的索引中也只有三个索引项,分别对应的是网页A、B和C。
图3中显示的是关于网页A的所有索引fields,这些fields的含义很清楚,我们主要
对boost进行一下解释。Boost field的值是通过链接到此网页的链接数目来进行计
算的,链接到此网页的链接越多,此值越大。但是两者并不是成线性关系的,
而是通过对数计算而得,计算公式为ln(e+n),其中参数n即是链接数目。例如此
例中链接到网页A的只有一个网页B,所以boost的值计算为ln(e+1) = 1.3132616…
但是本质上,boost的值并不是仅仅依赖于链接数目,它还与链接到本网页的母
网页的分数有关。我们分析过WebDB和segment,里面存储了每个网页的得分,
在boost的计算中,本质上是需要参考这些母网页的自身分数的。但是因为局域
网爬虫操作中默认取消了所有网页评分的操作,于是所有网页的分数被认定为1.0,
所以在boost的计算中,实际上只单独考虑了链接的数目。
那么,什么时候网页的评分将不会为1.0呢?Nutch利用了LinkAnalysisTool操作来
对网页进行评分,此操作利用的是google的pagerank算法。Pagerank算法在这里
不进行详细叙述了,有兴趣的朋友可以进行研究。我们知道,pagerank算法是
一个递归的过程,其算法复杂度和花费的时间较为巨大,所以在进行局域网
爬行的时候Nutch自动省略了这一操作,幸运的是,局域网中网页的检索在没有
这一步的情况下效果是理想的。但是对于整个网络的爬行以及检索,
LinkAnalysisTool操作是至关重要的,它也是google获得巨大成功的重要原因。
备注
分享到:
相关推荐
在“csdns”这个文件中,可能是Nutch爬虫抓取的一个特定网站或主题的数据。文件可能包含该网站的URL列表、抓取的网页内容、元数据等。通过分析这些数据,可以研究Nutch的抓取效果,比如抓取覆盖率、重复率、错误率等...
本资料包围绕Nutch爬虫,提供了相关的参考书籍和源代码分析,旨在帮助用户深入理解Nutch的工作原理和实践应用。 首先,Nutch爬虫的基础知识包括它的架构和工作流程。Nutch分为多个阶段,包括种子URL的生成、网页...
本文将详细分析Nutch爬虫的工作流程和涉及的主要文件格式。 首先,Nutch爬虫(Crawler)的核心任务是抓取互联网上的网页,并构建一个链接结构的数据库,称为WebDB。WebDB包含两类实体:Page和Link。Page实体记录了...
本文将对Nutch爬虫系统进行详细的分析和设计,介绍Nutch的体系结构、抓取部分、配置文件分析等方面的知识点。 一、Nutch简介 Nutch是一个基于Java语言的开源爬虫系统,由Apache组织开发和维护。Nutch的主要特点是...
抓取部分是Nutch爬虫系统的核心部分,负责抓取互联网上的网页数据。抓取部分包括以下几个步骤: 1. inject:将抓取的URL注入到抓取队列中。 2. generate:生成抓取的URL列表。 3. fetch:抓取互联网上的网页数据。 ...
总结,Nutch爬虫结合Java和Eclipse,为开发者提供了一个功能强大的网络数据抓取解决方案。通过Java的网络和解析库,可以实现高效、灵活的爬虫开发。在Eclipse中,我们不仅可以便捷地构建和运行Nutch项目,还能利用其...
Nutch 是一个开源的Web爬虫系统,专为大规模网络数据收集而设计,它被广泛应用于搜索引擎、学术研究以及大数据分析等领域。这篇毕业论文详细分析了Nutch爬虫系统的各个方面,旨在深入理解其工作原理和架构。 1. ...
Nutch 爬虫系统分析设计论文 Nutch 是一个开源的网页爬虫系统,主要用于从互联网上爬取大量的网页数据,并对其进行处理和存储。该系统的设计目的是为了满足高效、可扩展和可靠的网页爬取需求。 Nutch 体系结构 ...
对于初学者来说,"学习lucene和nutch爬虫代码"这个资料包应该包含了Lucene的基本代码示例和Nutch的爬虫代码。通过阅读和理解这些代码,你可以深入了解Lucene如何建立索引、执行搜索,以及Nutch如何抓取和处理网页。...
Nutch 是一个开源的网络爬虫项目,它提供了灵活的数据抓取能力,并支持二次开发定制功能。本篇培训讲义主要针对的是如何使用 Nutch 1.7 版本对腾讯微博进行抓取分析,特别强调了针对动态网页的抓取及自定义解析插件...
Nutch是Apache软件基金会开发的一款开源的Web爬虫系统,它用于抓取互联网上的网页并构建倒排索引,为搜索引擎提供数据基础。在实际应用中,由于Nutch的默认配置和工作流程可能存在效率问题,因此,理解其运行原理并...
v1.19 是该项目的一个稳定版本,提供了丰富的功能和改进,适用于研究、开发以及各种数据分析任务。在这个压缩包中,包含的是 Apache Nutch 的完整源代码,这对于学习、理解和定制网络爬虫系统非常有价值。 1. **...
Apache Nutch 是一款开源的网络爬虫项目,其1.13版本的源代码提供了丰富的学习资源,适合对网络爬虫技术感...通过学习和实践 Nutch,你可以提升自己的数据抓取和处理能力,为大数据分析和搜索引擎开发打下坚实基础。
“Nutch使用.pdf”和“Nutch入门教程.pdf”这两份文档将详细介绍如何从零开始使用Nutch,包括环境搭建、配置、启动爬虫、监控爬虫状态、查看抓取结果和索引数据等。通过这些教程,你可以快速掌握Nutch的基本操作,并...
Nutch是一个开源的Web爬虫项目,用于抓取互联网上的网页并建立索引,通常与Hadoop等大数据处理框架结合使用。在Windows环境下配置Nutch的运行环境,需要考虑以下几个关键知识点: 1. **开发环境配置**: - **JDK...
总的来说,"nutch 爬到的 CSDN 数据"是一个关于利用开源爬虫工具 Nutch 抓取并分析 CSDN 网站内容的过程,这个过程涉及到网络爬虫技术、数据抓取策略、数据分析等多个方面,具有广泛的应用前景和技术价值。...
Nutch可以与HBase、Cassandra等NoSQL数据库集成,用于存储大量抓取数据。此外,也可以与Apache Tika一起工作,提取网页中的元信息和内容。 12. **持续学习与更新** Nutch是一个活跃的开源项目,定期会有新功能和...