`
dragon0929
  • 浏览: 77660 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

 

网络爬虫调研报告

基本原理

Spider 概述

Spider 即网络爬虫 , 其定义有广义和狭义之分。狭义上指遵循标准的 http 协议利用超链接和 Web 文档检索的方法遍历万维网信息空间的软件程序 ; 而广义的定义则是所有能遵循 http 协议检索 Web 文档的软件都称之为网络爬虫。

Spider 是一个功能很强的自动提取网页的程序 , 它为搜索引擎从万维网上下载网页 , 是搜索引擎的重要组成 . 它通过请求站点上的 HTML 文档访问某一站点。它遍历 Web 空间 , 不断从一个站点移动到另一个站点 , 自动建立索引 , 并加入到网页数据库中。网络爬虫进入某个超级文本时 , 它利用 HTML 语言的标记结构来搜索信息及获取指向其他超级文本的 URL 地址 , 可以完全不依赖用户干预实现网络上的自动爬行和搜索。

Spider 的队列

1 )等待队列 : 新发现的 URL 被加入到这个队列 , 等待被 Spider 程序处理 ;

2 )处理队列 : 要被处理的 URL 被传送到这个队列。为了避免同一个 URL 被多次处理 , 当一个 URL 被处理过后 , 它将被转移到完成队列或者错误队列 ( 如果发生错误 )

3 )错误队列 : 如果在下载网页是发生错误 , URL 将被加入 到错误队列。

4 )完成队列 : 如果在处理网页没有发生错误 , URL 将被加入到完成队列。

网络爬虫搜索策略

在抓取网页的时候 , 目前网络爬虫一般有两种策略 : 无主题搜索与基于某特定主体的专业智能搜索。其中前者主要包括 : 广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中链接的所有网页 , 然后再选择其中的一个链接网页 , 继续抓取在此网页中链接的所有网页。这是最常用的方式 , 因为这个方法可以让网络爬虫并行处理 , 提高其抓取速度。深度优先是指网络爬虫会从起始页开始 , 一个链接一个链接跟踪下去 , 处理完这条线路之后再转入下一个起始页 , 继续跟踪链接。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行器采用宽度优先搜索策略或者是对这种策略的某些改进。

在专业搜索引擎中 , 网络爬虫的任务是获取 Web 页面和决定链接的访问顺序 , 它通常从一个 “种子集 ( 如用户查询、种子链接或种子页面 ) , 以迭代的方式访问页面和提取链接。搜索过程中 , 未访问的链接被暂存在一个称为 “搜索前沿 (Spider Frontier) 的队列中 , 网络爬虫根据搜索前沿中链接的 “重要程度 ”决定下一个要访问的链接。如何评价和预测链接的 “重要程度 ( 或称价值 ) 是决定网络爬虫搜索策略的关键。

众多的网络爬虫设计各不相同 , 但归根结底是采用不同的链接价值评价标准。

常用开源网络爬虫介绍及其比较

Nutch

开发语言: Java

http://lucene.apache.org/nutch/

简介:

Apache 的子项目之一,属于 Lucene 项目下的子项目。

Nutch 是一个基于 Lucene ,类似 Google 的完整网络搜索引擎解决方案,基于 Hadoop 的分布式处理模型保证了系统的性能,类似 Eclipse 的插件机制保证了系统的可客户化,而且很容易集成到自己的应用之中。

 

Larbin

开发语言: C++

http://larbin.sourceforge.net/index-eng.html

简介

   larbin 是一种开源的网络爬虫 / 网络蜘蛛,由法国的年轻人 Sébastien Ailleret 独立开发。 larbin 目的是能够跟踪页面的 url 进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。

   Larbin 只是一个爬虫,也就是说 larbin 只抓取网页,至于如何 parse 的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin 也不提供。

   latbin 最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看到,一个简单的 larbin 的爬虫可以每天获取500万的网页,非常高效。

 

Heritrix

开发语言: Java

http://crawler.archive.org/

简介

Nutch 比较

      Heritrix Nutch 。二者均为 Java 开源框架, Heritrix SourceForge 上的开源产品, Nutch Apache 的一个子项目,它们都称作网络爬虫 / 蜘蛛( Web Crawler ),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地,使用的方法都是分析网站每一个有效的 URI ,并提交 Http 请求,从而获得相应结果,生成本地文件及相应的日志信息等。

        Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的 URL 不针对先前的进行替换。爬虫通过 Web 用户界面启动、监控、调整,允许弹性的定义要获取的 URL

二者的差异:

Nutch 只获取并保存可索引的内容。 Heritrix 则是照单全收。力求保存页面原貌

Nutch 可以修剪内容,或者对内容格式进行转换。

Nutch 保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而 Heritrix 是添加 ( 追加 ) 新的内容。

Nutch 从命令行运行、控制。 Heritrix Web 控制管理界面。

Nutch 的定制能力不够强,不过现在已经有了一定改进。 Heritrix 可控制的参数更多。

Heritrix 提供的功能没有 nutch 多,有点整站下载的味道。既没有索引又没有解析,甚至对于重复爬取 URL 都处理不是很好。

Heritrix 的功能强大 但是配置起来却有点麻烦。

三者的比较

一、从功能方面来说, Heritrix Larbin 的功能类似。都是一个纯粹的网络爬虫,提供网站的镜像下载。而 Nutch 是一个网络搜索引擎框架,爬取网页只是其功能的一部分。

二、从分布式处理来说, Nutch 支持分布式处理,而另外两个好像尚且还没有支持。

三、从爬取的网页存储方式来说, Heritrix Larbin 都是将爬取下来的内容保存为原始类型的内容。而 Nutch 是将内容保存到其特定格式的 segment 中去。

四,对于爬取下来的内容的处理来说, Heritrix Larbin 都是将爬取下来的内容不经处理直接保存为原始内容。而 Nutch 对文本进行了包括链接分析、正文提取、建立索引( Lucene 索引)等处理。

五,从爬取的效率来说, Larbin 效率较高,因为其是使用 c++ 实现的并且功能单一。

3 种爬虫的比较

crawler

开发语言

功能单一

支持分布式爬取

效率

镜像保存

Nutch

Java

×

×

Larbin

C++

×

Heritrix

Java

×

其他网络爬虫介绍:

Heritrix
Heritrix 是一个开源,可扩展的 web 爬虫项目。 Heritrix 设计成严格按照 robots.txt 文件的排除指示和 META robots 标签。
http://crawler.archive.org/

WebSPHINX
WebSPHINX
是一个 Java 类包和 Web 爬虫的交互式开发环境。 Web 爬虫 ( 也叫作机器人或蜘蛛 ) 是可以自动浏览与处理 Web 页面的程序。 WebSPHINX 由两部分组成:爬虫工作平台和 WebSPHINX 类包。 http://www.cs.cmu.edu/~rcm/websphinx/

WebLech
WebLech
是一个功能强大的 Web 站点下载与镜像工具。它支持按功能需求来下载 web 站点并能够尽可能模仿标准 Web 浏览器的行为。 WebLech 有一个功能控制台并采用多线程操作。
http://weblech.sourceforge.net/
Arale
Arale
主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。 Arale 能够下载整个 web 站点或来自 web 站点的某些资源。 Arale 还能够把动态页面映射成静态页面。
http://web.tiscali.it/_flat/arale.jsp.html

 

分享到:
评论

相关推荐

    网络爬虫调研报告.docx

    《网络爬虫调研报告》 网络爬虫是互联网信息挖掘的重要工具,对于构建搜索引擎和提供检索服务至关重要。在本报告中,我们将深入探讨网络爬虫的背景、主要研究对象Nutch和Heritrix,以及爬虫的工作策略和流程。 ...

    网络爬虫调研报告.doc

    网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http...

    网络爬虫调研报告范本.doc

    网络爬虫调研报告范本.doc

    网络爬虫调研报告样本.doc

    【网络爬虫的基本原理】 网络爬虫,也称为Spider,是一种自动检索Web文档的软件工具。按照定义,网络爬虫可以分为广义和狭义两种理解。狭义上,网络爬虫特指遵循HTTP协议,利用超链接和Web文档检索技术在互联网上...

    网络爬虫调研报告(1).doc

    网络爬虫,也被称为Spider,是互联网中用于自动抓取网页信息的重要工具。从技术角度而言,网络爬虫遵循HTTP协议,通过解析HTML文档来遍历网页,建立索引,并将其存储于数据库中,以便搜索引擎或其他应用进行快速查找...

    网络爬虫调研报告(2).doc

    网络爬虫,也被称为Spider,是互联网信息抓取的核心工具,其主要任务是按照特定的策略从万维网中搜集信息。爬虫的工作原理可以分为以下几个关键部分: 1. **基本原理**: - **HTTP协议遵循**:无论是狭义还是广义...

    Python网络爬虫实习报告材料.pdf

    同时,了解了网络爬虫在现实中的应用,如市场调研、舆情分析等,进一步认识到网络爬虫在大数据时代的重要性。 整个实习报告详细阐述了网络爬虫的理论知识、常用工具和实战经验,对于提升Python爬虫技能和对互联网...

    Python网络爬虫实习报告-python实习报告.pdf

    Python网络爬虫的应用广泛,可以用于市场调研、舆情分析、学术研究等多个领域。\n\n二、爬虫原理\n\n爬虫的基本工作流程包括:发送请求、接收响应、解析网页、提取数据、存储数据。其中,Python的`urllib`和`...

    Python网络爬虫实习报告-python实习报告.docx

    网络爬虫技术在当前信息化社会中扮演着重要的角色,无论是搜索引擎优化、大数据分析还是市场调研等领域,都需要依赖高效稳定的爬虫工具来获取所需的数据。随着Python语言的流行与易用性,越来越多的开发者选择使用...

    Python网络爬虫实习报告python实习报告.docx

    网络爬虫技术在当前信息化社会中扮演着重要的角色,无论是搜索引擎优化、大数据分析还是市场调研等领域,都需要高效准确地从互联网上获取信息。Python作为一种功能强大且易于使用的编程语言,在爬虫开发领域有着广泛...

    Python网络爬虫实习报告[精品文档].docx

    根据提供的文件信息,我们可以从这份Python网络爬虫实习报告中提炼出以下相关知识点: ### 一、网络爬虫概述 网络爬虫(Web crawler),也称为网页蜘蛛或网络机器人,是一种按照一定的规则自动抓取互联网上的信息...

    基于Python的网络爬虫-开题报告.pdf

    **基于Python的网络爬虫设计与实现** 网络爬虫是一种自动化程序,用于抓取互联网上的大量信息,构建索引,以便进行数据分析或提供定制化的搜索服务。随着互联网的快速发展,动态网页技术的进步使得网络爬虫面临着新...

    基于Python的网络爬虫系统设计与实现开题报告+任务书.docx

    "基于Python的网络爬虫系统设计与实现" 本课题旨在设计和实现基于Python的网络爬虫系统,通过搭建面向互联网特定网站,使用网络爬虫技术抓取信息资源的数据采集系统。研究目标是学习了解并熟练掌握Python的语法规则...

    基于Python的网络爬虫-开题报告.docx

    **基于Python的网络爬虫设计与实现** 网络爬虫是一种自动化程序,用于抓取互联网上的大量信息,构建索引,以便进行数据分析或提供定制化的搜索服务。随着动态网页技术的广泛应用,网络爬虫面临着越来越复杂的挑战,...

    网络爬虫实现java版

    ### 知识点详解:Java实现的网络爬虫 #### 一、网络爬虫概述 - **定义**:网络爬虫(Spider),又称网络蜘蛛,是一种自动访问互联网上的网页并提取所需数据的程序。 - **用途**:常用于搜索引擎、数据分析、市场...

    关于对网上购物数据挖掘的调研报告

    - **实现**:可以采用Web爬虫技术来自动化地抓取所需信息,并使用自然语言处理技术来解析商品描述等文本数据。 #### 2. 搜索性价比高的商品的实现 - **描述**:系统不仅需要抓取商品信息,还需要对这些信息进行...

    python爬虫获取天气数据与儿童肺部疾病门诊就诊率相关性分析.pdf

    1. Python爬虫技术:Python是一种广泛使用的高级编程语言,它拥有强大的库支持和简洁的语法,非常适合网络爬虫的开发。网络爬虫是一种自动提取网页数据的程序,本研究利用Python的爬虫技术从在线监测平台抓取了空气...

Global site tag (gtag.js) - Google Analytics