分布式网络爬虫总体设计.docx
- 文档编号:10441245
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:50
- 大小:1.55MB
分布式网络爬虫总体设计.docx
《分布式网络爬虫总体设计.docx》由会员分享,可在线阅读,更多相关《分布式网络爬虫总体设计.docx(50页珍藏版)》请在冰豆网上搜索。
分布式网络爬虫总体设计
分布式网络爬虫-总体设计
中国矿业大学计算机学院
2014级本科生课程报告
课程名称应用软件开发实践
报告时间2017.6.28
学生姓名朱少杰、胥铁馨
学号08143334、08143336
专业14级计科6班
任课教师徐慧
任课教师评语
任课教师评语(①对课程基础理论的掌握;②对课程知识应用能力的评价;③对课程报告相关实验、作品、软件等成果的评价;④课程学习态度和上课纪律;⑤课程成果和报告工作量;⑥总体评价和成绩;⑦存在问题等):
到把这个网站所有的网页都抓取完为止。
如果把整个互联网当成一个网站,那么网络爬虫就可以用这个原理把互联网上所有的网页都抓取下来。
关键词:
网络爬虫;Java;多线程;MySQL;Webmagic;Csdnblog
ABSTRACT
WebCrawler,usuallycalledCrawlerforshort,isanimportantpartofsearchengine.Withthehigh-speeddevelopmentofinformation,WebCrawler--thesearchenginecannotlackof--whichisahotresearchtopicthoseyears.ThequalityofasearchengineismostlydependedonthequalityofaWebCrawler.Nowadays,thedirectionofresearchingWebCrawlermainlydividesintotwoparts:
oneisthesearchingstrategytowebpages;theotheristhealgorithmofanalysisURLs.Amongthem,theresearchofTopic-FocusedWebCrawleristhetrend.Itusessomewebpageanalysisstrategytofiltertopic-lessURLsandaddfitURLsintoURL-WAITqueue.Themetaphorofaspiderwebinternet,thenSpiderspideriscrawlingaroundontheInternet.Webspiderthroughweblinkaddresstofindpages,startingfromaonepagewebsite(usuallyhome),readthecontentsofthepage,findtheaddressoftheotherlinksonthepage,andthenlookforthenextWebpageaddressesthroughtheselinks,sohasbeenthecyclecontinues,untilallthepagesofthissitearecrawledexhausted.IftheentireInternetasasite,thenyoucanusethisWebcrawlerprincipleallthepagesontheInternetarecrawlingdown..
Keywords:
Webcrawler;Java;Multithreading;MySQL;Webmagic;Csdnblog
一.网络爬虫的简介
1.1定义
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
1.2产生背景
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。
搜索引擎(SearchEngine),例如传统的通用搜索引擎AltaVista,Yahoo!
和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。
但是,这些通用性搜索引擎也存在着一定的局限性,如:
(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。
(2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
(3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。
(4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。
为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。
聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。
与通用爬虫(generalpurposewebcrawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
1.3组成
在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。
控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。
解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,爬虫的基本工作是由解析器完成。
资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。
控制器
控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。
解析器
解析器是负责网络爬虫的主要部分,其负责的工作主要有:
下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。
资源库
主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。
中大型的数据库产品有:
Oracle、SqlServer等。
1.4分类
1.4.1通用网络爬虫
通用网络爬虫又称全网爬虫(ScalableWebCrawler),爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。
由于商业原因,它们的技术细节很少公布出来。
这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。
虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。
1.4.2焦网络爬虫
聚焦网络爬虫(FocusedCrawler),又称主题网络爬虫(TopicalCrawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫[8]。
和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。
1.4.3增量式网络爬虫
增量式网络爬虫(IncrementalWebCrawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。
和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。
增量式网络爬虫的体系结构[包含爬行模块、排序模块、更新模块、本地页面集、待爬行URL集以及本地页面URL集。
1.4.4DeepWeb爬虫
Web页面按存在方式可以分为表层网页(SurfaceWeb)和深层网页(DeepWeb,也称InvisibleWebPages或HiddenWeb)。
表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。
DeepWeb是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。
例如那些用户注册后内容才可见的网页就属于DeepWeb。
2000年BrightPlanet指出:
DeepWeb中可访问信息容量是SurfaceWeb的几百倍,是互联网上最大、发展最快的新型信息资源。
1.5发展趋势
目前,大多数的搜索引擎都是基于关键词的搜索引擎。
基于关键字匹配的搜索技术有较大的局限性:
首先,它不能区分同形异义。
其次,不能联想到关键字的同义词。
Web商业化至今,搜索引擎始终保持着网络上被使用最多的服务项目的地位,然而,随着网上内容的爆炸式增长和内容形式花样的不断翻新,搜索引擎越来越不能满足挑剔的网民们的各种信息需求。
搜索引擎的发展面临着两大难题:
一是如何跟上Internet的发展速度,二是如何为用户提供更精确的查询结果。
所以,传统的引擎不能适应信息技术的高速发展,新一代智能搜索引擎作为一种高效搜索引擎技术的在当今的网络信息时代日益引起业界人士的关注。
搜索引擎己成为一个新的研究、开发领域。
因为它要用到信息检索、人工智能、计算机网络、分布式处理、数据库、数据挖掘、数字图书馆、自然语言处理等多领域的理论和技术,所以具有综合性和挑战性。
又由于搜索引擎有大量的用户,有很好的经济价值,所以引起了世界各国计算机科学界和信息产业界的高度关注,目前的研究、开发十分活跃,并出现了很多值得注意的动向。
二.环境需求及配置
2.1Java版本及配置
图1Java版本号
图2Java配置一
图3Java配置二
图4Java配置三
2.2Eclipse配置
下载Eclipse压缩包,并将Eclipse压缩包解压
图5解压后
2.3Maven配置
下载maven的bin,在apache官方网站可以下载。
版本类型
下载下来之后,解压,找个路径放进去,把bin的位置设在环境变量里,新建环境变量MAVEN_HOME
图6环境变量配置一
在PATH里加入maven的bin的路径
图7环境变量配置二
配置完毕后,在Windows命令提示符下,输入mvn-v测试一下,配置成功显示如图:
图8配置成功
配置成功后开始在Eclipse中配置Maven,点击eclipse菜单栏Help->EclipseMarketplace搜索关键字maven到插件MavenIntegrationforEclipse并点击安装即可,如下图:
图9在Eclipse中配置maven
重启后,为了使得Eclipse中安装的Maven插件,同windows中安装的那个相同,需要让eclipse中的maven重新定位一下,点击Window->Preference->Maven->Installation->Add进行设置
图10配置二
三.网络爬虫模型的具体设计
3.1框架webmagic
3.1.1WebMagic概览
WebMagic项目代码分为核心和扩展两部分。
核心部分(webmagic-core)是一个精简的、模块化的爬虫实现,而扩展部分则包括一些便利的、实用性的功能。
WebMagic的架构设计参照了Scrapy,目标是尽量的模块化,并体现爬虫的功能特点。
3.1.2Webmagic总体架构
WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。
这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。
WebMagic的设计参考了Scapy,但是实现方式更Java化一些。
而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。
WebMagic总体架构图如下:
图11WebMagic总体架构
3.1.3Webmagic项目组成
WebMagic项目代码包括几个部分,在根目录下以不同目录名分开。
它们都是独立的Maven项目。
主要部分
WebMagic主要包括两个包,这两个包经过广泛实用,已经比较成熟:
webmagic-core
webmagic-core是WebMagic核心部分,只包含爬虫基本模块和基本抽取器。
WebMagic-core的目标是成为网页爬虫的一个教科书般的实现。
webmagic-extension
webmagic-extension是WebMagic的主要扩展模块,提供一些更方便的编写爬虫的工具。
包括注解格式定义爬虫、JSON、分布式等支持。
外围功能
除此之外,WebMagic项目里还有几个包,这些都是一些实验性的功能,目的只是提供一些与外围工具整合的样例。
因为精力有限,这些包没有经过广泛的使用和测试,推荐使用方式是自行下载源码,遇到问题后再修改。
webmagic-samples
这里是作者早期编写的一些爬虫的例子。
因为时间有限,这些例子有些使用的仍然是老版本的API,也可能有一些因为目标页面的结构变化不再可用了。
最新的、精选过的例子,请看webmaigc-core的us.codecraft.webmagic.processor.example包和webmaigc-core的us.codecraft.webmagic.example包
webmagic-scripts
WebMagic对于爬虫规则脚本化的一些尝试,目标是让开发者脱离Java语言,来进行简单、快速的开发。
同时强调脚本的共享。
webmagic-selenium
WebmMgic与Selenium结合的模块。
Selenium是一个模拟浏览器进行页面渲染的工具,WebMagic依赖Selenium进行动态页面的抓取。
webmagic-saxon
WebMagic与Saxon结合的模块。
Saxon是一个XPath、XSLT的解析工具,webmagic依赖Saxon来进行XPath2.0语法解析支持。
webmagic-avalon
webmagic-avalon是一个特殊的项目,它想基于WebMagic实现一个产品化的工具,涵盖爬虫的创建、爬虫的管理等后台工具。
3.2网页搜索策略
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。
该算法的设计和实现相对简单。
在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。
也有很多研究将广度优先搜索策略应用于聚焦爬虫中。
其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。
另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。
这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。
3.2.1拓扑分析算法
基于网页之间的链接,通过已知的网页或数据,来对与其有直接或间接链接关系的对象(可以是网页或网站等)作出评价的算法。
又分为网页粒度、网站粒度和网页块粒度这三种。
1网页(Webpage)粒度的分析算法
PageRank和HITS算法是最常见的链接分析算法,两者都是通过对网页间链接度的递归和规范化计算,得到每个网页的重要度评价。
PageRank算法虽然考虑了用户访问行为的随机性和Sink网页的存在,但忽略了绝大多数用户访问时带有目的性,即网页和链接与查询主题的相关性。
针对这个问题,HITS算法提出了两个关键的概念:
权威型网页(authority)和中心型网页(hub)。
基于链接的抓取的问题是相关页面主题团之间的隧道现象,即很多在抓取路径上偏离主题的网页也指向目标网页,局部评价策略中断了在当前路径上的抓取行为。
文献[21]提出了一种基于反向链接(BackLink)的分层式上下文模型(ContextModel),用于描述指向目标网页一定物理跳数半径内的网页拓扑图的中心Layer0为目标网页,将网页依据指向目标网页的物理跳数进行层次划分,从外层网页指向内层网页的链接称为反向链接。
2网站粒度的分析算法
网站粒度的资源发现和管理策略也比网页粒度的更简单有效。
网站粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。
SiteRank的计算方法与PageRank类似,但是需要对网站之间的链接作一定程度抽象,并在一定的模型下计算链接的权重。
网站划分情况分为按域名划分和按IP地址划分两种。
文献[18]讨论了在分布式情况下,通过对同一个域名下不同主机、服务器的IP地址进行站点划分,构造站点图,利用类似PageRank的方法评价SiteRank。
同时,根据不同文件在各个站点上的分布情况,构造文档图,结合SiteRank分布式计算得到DocRank。
文献[18]证明,利用分布式的SiteRank计算,不仅大大降低了单机站点的算法代价,而且克服了单独站点对整个网络覆盖率有限的缺点。
附带的一个优点是,常见PageRank造假难以对SiteRank进行欺骗。
3网页块粒度的分析算法
在一个页面中,往往含有多个指向其他页面的链接,这些链接中只有一部分是指向主题相关网页的,或根据网页的链接锚文本表明其具有较高重要性。
但是,在PageRank和HITS算法中,没有对这些链接作区分,因此常常给网页分析带来广告等噪声链接的干扰。
在网页块级别(Blocklevel)进行链接分析的算法的基本思想是通过VIPS网页分割算法将网页分为不同的网页块(pageblock),然后对这些网页块建立pagetoblock和blocktopage的链接矩阵,分别记为Z和X。
于是,在pagetopage图上的网页块级别的PageRank为?
Wp=X×Z;在blocktoblock图上的BlockRank为Wb=Z×X。
已经有人实现了块级别的PageRank和HITS算法,并通过实验证明,效率和准确率都比传统的对应算法要好。
3.2.2网页内容分析算法
基于网页内容的分析算法指的是利用网页内容(文本、数据等资源)特征进行的网页评价。
网页的内容从原来的以超文本为主,发展到后来动态页面(或称为HiddenWeb)数据为主,后者的数据量约为直接可见页面数据(PIW,PubliclyIndexableWeb)的400~500倍。
另一方面,多媒体数据、WebService等各种网络资源形式也日益丰富。
因此,基于网页内容的分析算法也从原来的较为单纯的文本检索方法,发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。
本节根据网页数据形式的不同,将基于网页内容的分析算法,归纳以下三类:
第一种针对以文本和超链接为主的无结构或结构很简单的网页;第二种针对从结构化的数据源(如RDBMS)动态生成的页面,其数据不能直接批量访问;第三种针对的数据界于第一和第二类数据之间,具有较好的结构,显示遵循一定模式或风格,且可以直接访问。
基于文本的网页分析算法
1)纯文本分类与聚类算法
很大程度上借用了文本检索的技术。
文本分析算法可以快速有效的对网页进行分类和聚类,但是由于忽略了网页间和网页内部的结构信息,很少单独使用。
2)超文本分类和聚类算法
根据网页链接网页的相关类型对网页进行分类,依靠相关联的网页推测该网页的类型
3.3爬行策略
下述的三种网络特征,造成了设计网页爬虫抓取策略变得很难:
⌝它巨大的数据量;
⌝它快速的更新频率;
⌝ 动态页面的产生
它们三个特征一起产生了很多种类的爬虫抓取链接。
巨大的数据量暗示了爬虫,在给定的时间内,只可以抓取所下载网络的一部分,所以,它需要对它的抓取页面设置优先级;快速的更新频率说明在爬虫抓取下载某网站一个网页的时候,很有可能在这个站点又有新的网页被添加进来,或者这个页面被更新或者删除了。
最近新增的很多页面都是通过服务器端脚本语言产生的,无穷的参数组合也增加了爬虫抓取的难度,只有一小部分这种组合会返回一些独特的内容。
例如,一个很小照片存储库仅仅通过get方式可能提供就给用户三种操作方式。
如果这里存着四种分类方式,三种缩略图方式,两种文件格式,和一个禁止用户提供内容的选项,那么,同样的内容就可以通过48种方式访问。
这种数学组合给网络爬虫创造的难处就是,为了获取不同的内容,他们必须筛选无穷仅有微小变化的组合。
正如爱德华等人所说的:
“用于检索的带宽不是无限的,也不是免费的;所以,如果引入衡量爬虫抓取质量或者新鲜度的有效指标的话,不但伸缩性,连有效性都将变得十分必要”(爱德华等人,2001年)。
一个爬虫就必须小心的选择下一步要访问什么页面。
网页爬虫的行为通常是四种策略组合的结果。
♦选择策略,决定所要下载的页面;
♦重新访问策略,决定什么时候检查页面的更新变化;
♦平衡礼貌策略,指出怎样避免站点超载;
♦并行策略,指出怎么协同达到分布式抓取的效果;
选择策略:
就现在网络资源的大小而言,即使很大的搜索引擎也只能获取网络上可得到资源的一小部分。
由劳伦斯河盖尔斯共同做的一项研究指出,没有一个搜索引擎抓取的内容达到网络的16%(劳伦斯河盖尔斯,2001)。
网络爬虫通常仅仅下载网页内容的一部分,但是大家都还是强烈要求下载的部分包括最多的相关页面,而不仅仅是一个随机的简单的站点。
这就要求一个公共标准来区分网页的重要程度,一个页面的重要程度与他自身的质量有关,与按照链接数、访问数得出的受欢迎程度有关,甚至与他本身的网址(后来出现的把搜索放在一个顶级域名或者一个固定页面上的垂直搜索)有关。
设计一个好的搜索策略还有额外的困难,它必须在不完全信息下工作,因为整个页面的集合在抓取时是未知的。
Cho等人(Choetal,1998)做了第一份抓取策略的研究。
他们的数据是斯坦福大学网站中的18万个页面,使用不同的策略分别模仿抓取。
排序的方法使用了广度优先,后链计数,和部分pagerank算法。
计算显示,如果你想要优先下载pagerank高的页面,那么,部分PageRank策略是比较好的,其次是广度优先和后链计数。
并且,这样的结果仅仅是针对一个站点的。
Najork和Wiener(NajorkandWiener,2001)采用实际的爬虫,对3.28亿个网页,采用广度优先研究。
他们发现广度优先会较早的抓到PageRank高的页面(但是他们没有采用其他策略进行研究)。
作者给出的解释是:
“最重要的页面会有很多的主机连接到他们,并且那些链接会较早的发现,而不用考虑从哪一个主机开始。
”
Abiteboul(Abiteboul等人,2003),设计了一种基于OPIC(在线页面重要指数)的抓取战略。
在OPIC中,每一个页面都有一个相等的初始权值,并把这些权值平均分给它所指向的页面。
这种算法与Pagerank相似,但是他的速度很快,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 网络 爬虫 总体 设计