`
deepfuture
  • 浏览: 4398335 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80056
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70004
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103313
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285650
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15002
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67511
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32116
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45966
社区版块
存档分类
最新评论

网络爬虫调研报告

阅读更多

基本原理

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比较

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

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

二者的差异:

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

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

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

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

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

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

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

三者的比较

一、从功能方面来说,HeritrixLarbin的功能类似。都是一个纯粹的网络爬虫,提供网站的镜像下载。而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

J-Spider
J-Spider:
是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。
http://j-spider.sourceforge.net/

spindle
spindle
是一个构建在Lucene工具包之上的Web索引/搜索工具.它包括一个用于创建索引的HTTP spider和一个用于搜索这些索引的搜索类。spindle项目提供了一组JSP标签库使得那些基于JSP的站点不需要开发任何Java类就能够增加搜索功能。
http://www.bitmechanic.com/projects/spindle/

Arachnid
Arachnid:
是一个基于Javaweb spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。 Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架。
http://arachnid.sourceforge.net/

LARM
LARM
能够为Jakarta Lucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。
http://larm.sourceforge.net/

JoBo
JoBo
是一个用于下载整个Web站点的简单工具。它本质是一个Web Spider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理sessionJoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制下载。
http://www.matuschek.net/software/jobo/index.html

snoics-reptile
snoics -reptile
是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各种类型的文件,如:图片、flashmp3ziprarexe等文件。可以将整个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。只需要把抓取下来的网站放到web服务器(如:Apache)中,就可以实现完整的网站镜像。
http://www.blogjava.net/snoics


Web-Harvest
Web-Harvest
是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。
http://web-harvest.sourceforge.net

spiderpy
spiderpy
是一个基于Python编码的一个开源web爬虫工具,允许用户收集文件和搜索网站,并有一个可配置的界面。
http://pyspider.sourceforge.net/

The Spider Web Network Xoops Mod Team
pider Web Network Xoops Mod
是一个Xoops下的模块,完全由PHP语言实现。
http://www.tswn.com/

larbin
larbin
是个基于C++web爬虫工具,拥有易于操作的界面,不过只能跑在LINUX下,在一台普通PClarbin每天可以爬5百万个页面(当然啦,需要拥有良好的网络)
http://larbin.sourceforge.net/index-eng.html

爬虫存在的问题

1. robots.txt

robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容。

当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。

另外,robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。

2. 有些类型的网页难以爬取。例如,使用javascript调用的页面、需要注册才能访问的页面等。

网络爬虫的相关研究工作

有些类型的网页难以爬取。例如,使用javascript调用的页面、需要注册才能访问的页面等,对于这些网络的爬取被归结为深层网络的挖掘。这些网页可归结为如下几类1)通过

填写表单形成对后台再现数据库查询得到的动态页面。(2)由于缺乏被指向的超链接而没有被索引到的页面。(3)需要注册或其他限制访问的页面。(4)可访问的非网页文件。曾伟辉等人的文章中,对这类问题进行了综述。在王映等人的文章中,提出了使用一个嵌入式的JavaScript引擎来进行动态网页采集的方法。

1. 有些非静态的Web2.0网站的内容动态生成,数据量巨大,难以抓取,例如论坛等网站。在2008SIGIR中,Yida Wang等提出了一种爬取论坛的爬取方法。

2. 有些网站会限制网络爬虫的爬取,Analia G. Lourenco, Orlando O. Belo 2006年提出来使用查询日志的方法限制网络爬虫的活动以减轻服务器压力。

3. 网络上的网页数量太大,在爬取时需要考虑爬取的时间及效率等问题,UCLAJunghoo Cho等提出了使用并行的crawler的方法。

4.

分享到:
评论

相关推荐

    网络爬虫调研报告.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