当前位置:文档之家› 广域网分布式Web爬虫

广域网分布式Web爬虫

广域网分布式Web爬虫
广域网分布式Web爬虫

广域网分布式Web爬虫

滕千红

(湖工,管院,1010831119)

摘要:分析了广域网分布式Web爬虫相对于局域网爬虫的诸多优势,提出了广域网分布式Web爬虫的3个核心问题:Web划分、Agent协同和Agent部署周绕这3个问题,对目前学术界和商业界出现的多种实现方案和策略进行了全面的综述,深入讨论了研究中遇到的问题与挑战,并论述了广域网分布式Web爬虫的评价模型.最后,对未来的研究方向进行了总结。

关键词:搜索引擎;广域网分布式爬虫;Web划分;Agent协同;Agent 部属。

搜索引擎作为互联网上一种有效的信息获取渠道,与电子邮件、即时通信并称为互联网三大基础应用。在人们的日常生活中发挥着重要的作用.然而,互联网的飞速发展使搜索引擎面临巨大的挑战.2008年1月发布的《第21次中国互联网络发展状况统计报告》显示,中国网站数量已达150万个,比去年同期增长了66万个,增长率达到78.4%:中国总网页数为84.7亿个,年增长率达到89.4%;网站总字节数已经达到198 348GB.按照目前的统计数字,假设搜索引擎爬虫系统的网络接入总带宽为lOOMb/s,即使这些带宽被完全利用,仅下载中国的网页就需要近200天.如此巨大的数据量,使得对网页内容和链接关系的处理必须由多机并行完成。分布式Web爬虫是

由多个可并发获取Web信息的Agent构成的Web爬虫系统,每个Agent 运行于不同的计算资源之上,这些资源或集中部署在同一个局域网(10cal area network,简称LAN)内部,或分布在广域l网(wide area network。简称WAN)的不同地理位置和网络位置,每个Agent 以多进程或多线程方式通过并发保持多个TCP链接获取Web信息.部署于LAN上的分布式Web爬虫受到带宽等因素的制约,已经不能对Web进行快速而有效的抓取.基于广域网的分布式爬虫实现方案具有多点接入总带宽较高、对Internet负载较小、容易实现就近高效抓取以及可扩展性强等优点,已经成为学术界、商业界和开源社区爬虫系统实现的优选方案。广域网分布式爬虫融合了分布式系统、并行计算及网络测量等主题,具有很强的应用价值与理论研究意义。

1、引言

在分布式Web爬虫领域,商业界与学术界各自为战,许多优秀的实现方法不是源自于学术界,而是来自于一些公司.出于商业因素的考虑,公司成果一般不通过论文公开发表;而学术界的研究成果虽然公开,但是被大规模采用的并不多;另外,还有一些组织和个人以GPL(GNU general public license)的方式开发和发布自己的系统.遗憾的是,这类系统也很少以论文形式发表.部署在LAN上的分布式Web爬虫率先被提出,并得到广泛的使用.较为著名的有早期的Google[舶,AltaVista的Intnet Archive Crawlert31,Mercatert4I 等.但是,由于受到带宽等瓶颈因素的制约,此种系统即使软硬件的规模不断扩大,也只能获取全体Web信息中相对较小的一部分.为了

解决上述问题,人们提出了部署于广域网环境的分布式Web爬虫.1.1相关工作

近几年来,商业界和开源社区出现了一些广域网分布式爬虫系统(或搜索引擎),其思路一般是公司或组织向用户提供爬虫程序.一方面,分布在各地的用户运行自己机器上的爬虫程序为公司提供数据;另一方面,公司为安装有爬虫的用户提供各种检索服务,如Yacy(http://yaey.net/)的个性化匿名检索,甚至将利润反馈给用户(如Faroo(http://www.faroo.corn/)).在实现方面,这些系统有的是类似于SETI@Home那样的主从式结构(如Majestic(http://www.majesticl2.co.uk0),属于有调度中心的Agent协同;有的是P2P方式进行分布式调度(如Faroo),即无调度中心的Agent协同.这些系统的实现五花八门,但是由于发展时间较短,规模相对较小.在学术方面,Cho等人首次给出了分布式爬虫的分类方法、评价指标等一系列基本概念,并提出基于广域网分布式爬虫与部署于LAN 的系统相比,具有高可扩展性和减少Internet负载的优点,为广域网分布式爬虫的研究奠定了基础.UbiCrawert扩展了一些概念,并声称可以支持基于广域网的分布式平台.Dustin B

等人对多种分布式爬虫进行了比较,提出广域网爬虫是解决爬虫系统带宽瓶颈的有效方法.Yahoo研究院的Baeza.Yates等人在其综述中将分布式爬虫定义为“原则上某些节点可以分布于不同的地理或网络位置”.2003年后,很多研究开始关注广域网分布式爬虫,代表性的有,IPMicrat第~个基于位置信息调度的分布式爬虫,SE4SEE实

现了基于网格的分布式爬虫,Apoideatl实现了基于P2P协议的完全分布式爬虫.国内学术界对分布式爬虫研究得较少,代表性的有北京大学的天网搜索引擎[14J的爬虫系统,这是一个基于LAN的爬虫,已经开始商业化运作;上海交通大学的Igloo爬虫实现了基于网格服务的分布式爬虫(IglooG),万方网格的特性使其能够支持广域网部署.

1.2分布式爬虫的基本结构和工作流程

由于爬虫要下载多个网页,而各个网页的下载过程之间依赖性较小,因此可以被并行化.为了高效地下载网页,爬虫程序一般被设计为多线程和多进程协同的方式,而分布式爬虫是将多个具有抓取网页功能的Agent分别部署于多个计算资源之上的爬虫程序.以下是分布式爬虫中每个Agent的大致工作流程(其中,左侧带+号的两行代码可能需要多机协同完成).为了突出Agent对URL的处理,算法描述省略了域名解析、对网页和URL的预处理以及解析网站的Robots.txt 文件的过程.

URL Seen:用于存储已经抓取过的URL.

URL队列:用于存储待抓取的URL.

输入:初始URL列表.

Agent(初始URL列表){

将初始URL列表中的URL放入URL队列;

while(ERE队列不为空){

从URL队列中取出一个URL;

将URL存入URLSeen;

下载URL指向的网页:

提取网页中含有的URL;

for(每一个新发现的URL){

if(URL应由本Agent负责){

if(URL不在URLSeen中&&URL不在URL队列中)

将URL放入URL队列:

)else{

·通过一定的Web划分方法选择负责当前URL的Agent;

·将URL发送至此Agent;

} ) )

}

1.3广域网分布式Web爬虫的优势和挑战

广域网分布式Web爬虫与基于LAN的分布式爬虫或称局域网爬虫相比具有诸多优势:

(1)可扩展性

可扩展性是局域网爬虫的致命缺点,也是提出广域网分布式爬虫的主要原因.首先,广域网系统能够容纳更多的计算资源,拥有更多的网络接入点.理论上,整体吞吐量可以无限扩展;局域网爬虫因其计算资源数量受到LAN的限制,很难扩展到较大的规模,从而限制了系统整体吞吐量.其次,广域网系统是由若干个相对较小的机群甚至单机节点组成,这使得资源添加和系统维护都变得相对简单.如果能

够进一步利用分布在Intemet上的个人计算资源,则维护开销将大为降低;相比之下,在LAN中维护大规模机群的代价则非常昂贵,需要解决数据存储、系统互连、机架结构、电源、散热等诸多问题.(2)多网络接入点

爬虫在抓取网页时,HTTP请求和下载网页的过程需要占用系统网络接入点的大部分带宽.对基于LAN的系统,随着机群规模的扩大,接入带宽将变为系统瓶颈.如果爬虫程序分布在不同的网络位置,就可以使用多个网络接入点,理论上可以获得相当于这些接入点加和的总带宽.并且随着网络接入点数量的增加,系统的总带宽也会相应增加,理论上带宽可以无限扩展.(31减少对Intemet的网络负载

爬虫程序在发出HTTP请求并下载网页时,大量数据报文的传播增加了Internet的负载,在一定程度上影响了Intemet的服务质量.如果能够实现就近抓取,即布置在不同地域的分布式爬虫仅负责抓取距离自己相对较近的网站,则广域网分布式爬虫可以将系统带给Internet的网络负载控制在局部.而对于基于LAN的爬虫,由于其网络接入点单一,大量数据包要经过较长的路径才能到达目的地,从而给路径上的所有网络资源(如路由器、交换机、网关等)带来压力.广域网尤其是Intemet环境比局域网要复杂得多,系统一旦架设到广域网环境就会受到诸多限制.如何有效利用广域网资源同时又能消除广域网环境的不利影响,是广域网分布式爬虫研究所面临的重大挑战.本文针对当前广域网分布式Web爬虫的研究和实践,总结出这一领域的3个关键问题:

(1)Web划分:如何将抓取Web这个巨大的任务切分成多份,交予系统中的多个Agent执行.

(2)Agent协同:多个Agent之间应该如何进行协同工作,如何进行互联与通信.

(3)Agent部署:如何利用现有硬件和网络资源构建广域网分布式爬虫系统.

这3个关键问题在广域网分布式Web爬虫研究中的层次结构如图l所示:最上层的Web划分强调的是逻辑问题,相当于决策层;最下层的Agent部署强调的是物理问题,它作为系统的基础是工程性很强的一层;Agent协同则既涉及物理又涉及逻辑,包含了程序实现和网络环境分析等多方面的问题.

2 、Web划分

系统中各个Agent在抓取过程中会不断地发现新的URL,而这些URL中存在大量的重复.如果将这些新URL直接交由发现它的Agent 抓取,那么将会引起多个Agent下载相同的网页,从而引起重复工作,降低整体的网页抓取效率.因此,需要一种为各个Agent分配URL的策略,由此提出Web划分的概念.

2.1 Web划分的定义

定义l(Web划分集合和Web划分集合的分类).设分布式Web 爬虫由Ⅳ个Agent组成,Web上所有网页的集合

2.2 Web划分单元

Web划分单元的选取是实现W曲划分时必须考虑的问题.Web

划分单元是Agent在工作过程中所负责抓取的最小集合,凡是包含于划分单元的网页,全部由一个Agent负责抓取.用于w曲划分单元的某些属性的集合称为划分属性,用于指导对Web划分单元的分类.这些属性可以来自URL字符串本身。也可以来自与URL相关的某些事物,如网站IP地址、网页内容、第三方信息等.根据广域网环境下实验的经验,广域网分布式系统在进行任务划分时粒度必须适当地大,以保证各个节点具有较高的计算通信比,尽量降低信息交换引发的时间开销.Web划分单元对应任务粒度的概念,因此这样的结论同样适用于广域网分布式爬虫.下面讨论两个典型的Web划分单元(以下简称为单元),并对其划分属性及优缺点进行论述.

(1)链接(URL)

URL是Web爬虫研究中最小的Web划分单元,优点是简单、直观,缺点是粒度太细.由于Web上存在的链

接比网站总数要多得多,对URL进行分类的工作量是十分巨大的.与主机名相比,URL所携带的划分属性比较

少。仅能显示文件类型等信息.

(2)主机(host)

以URL中的主机名(即hostname,比如URL:http://www.sina.corn/index.html的主机名为www.sina.corn)为Web划分单元,是大部分分布式Web爬虫的首选.相对于以URL为单元而言,本方法产生的跨分区链接较少.因为处于同一个主机的URL 必然会被分配到同一个划分集合中;而在以URL为单元的情况下,这

些URL可能会被分配到很多不同的Web划分集合中,这样,主机内部的链接也变成了跨分区链接.对主机名的一种延伸是域名,由于一个域名下可能拥有若干主机,因此域名是一种粒度更大的Web划分单元.主机所具有的划分属性主要有IP地址、网站类型等。除了以上两种单元以外,由于RIRs(regional intemet registries)的存在,通过主机的IP地址等信息还可以得到网站所在国家、地区及运营商等信息,给Web划分单元提供了更多的可选方案。

2.3 Web划分策略

根据定义2,在系统中含有Ⅳ个Agent的情况下,Web划分的前提是找出Web全集的一个大小为Ⅳ的子集(Web划分集合)的集合.采用何种方法将所有Web划分单元分类成Ⅳ个Web划分集合,并实现其与Ⅳ个Agent的一一映射。构成了分布式Web爬虫的Web划分策略.下面介绍目前已经提出的几种Web划分策略,对其原理和优、缺点进行详细论述.

(1)基于随机哈希

基于随机哈希的方法是采用得最多的Web划分方法.最早的分布式爬虫系统大多是建立在对在对URL或主机名哈希的基础之上的.首先,这种方法非常容易计算,用于调度的系统开销较小;其次,由于哈希函数的随机性,保证了各个Agent间负载均衡;另外,这种将字符串映射为随机数的方法非常易于与采用DHT的P2P系统集成,如UbiCrawler(并没有声称自己是P2P系统,但是最早使用了类DHT方法:consistent hashing,Apoidea等。

基于哈希的方法遇到的最大问题是,结构简单的哈希值无法体现出主机所具有的类型、地理位置、网络距离等信息,也就无法利用这些属性提高分类质量。

(2)基于域名后缀及文件类型

有的爬虫根据主机或网站的域名后缀不同,将Web划分单元分配到不同的Web划分集合.比如,根据网站域名中诸如.net,.org,.corn,.edu这些表示组织性质的后缀进行分类;还可以根据URL字符串中的文件类型如.html,.rap3等进行分类.以上两种分类方法更加注重对网页内容的分类.SE4SEE提出根据表示语言类型或国家、区域的域名后缀,如.cn,jp,.fr等进行分类,这样不仅实现了按照网页内容分类,而且由于每种语言群体的地理分布基本都不相同,也部分地实现了按地理位置划分,为爬虫就近抓取创造了一定的条件.这种方法的优点是,Web数据在抓取时就已经进行了初步的分类,为以后的数据分析工作奠定了比较好的基础.但它仍然存在诸多缺陷:首先,并非每个URL或域名都遵守传统的后缀命名规范,如有的学校的域名就是.corn而不是大家普遍认同的.edu;样,也有很多.cn(中文)后缀的网站其实含有大量英语内容;其次,由于各种类型的网站的数量或文件的数量分布不均,将造成系统中各个Agent的负载不均,比如,按照语言类型分类,小语种网站的数量非常少,而拥有诸如.en,.de这类域名后缀的网站数量则非常大.跨越较大的地理范围和网络范围是广域网分布式系统天生的优势,可以利用这个优势实现Agent对网站的就近抓取。即对每个网站由距离它

最近的那个Agent来抓取.下面介绍的两种Web划分策略都以就近抓取为目的,并且均采用主机名作为Web划分单元.

(3)基于地理位置

基于地理位置抓取是由就近抓取所想到的最直观的方法,即对每个网站由地理上距离它最近的那个Agent来抓取.比如,部署在法国的Agent只抓取法国境内的网站,部署在中国黑龙江省的Agent只抓取黑龙江省内的网站.这种方法具有一定的可行性,因为网络数据的传输都要经过物理线路,因此地理距离较远的两点间,数据传输时间也相对较长,尤其是跨国和跨大洲的线路.一种想法是按照地理位置的层级关系(如大陆、大洲、国家、省等1建立分类树,但前提是必须获得每个网站的地理位置信息.Exposto等人提出通过提取网页中的地理信息,再通过计算进行划分操作,从而实现对URL的分类.仅以地理位置为参考也存在一定的局限性:首先。网络上任意两台主机之间的路由路径长度并不与地理位置远近相符.网络运营商在进行路由选择时通常还要考虑到诸多商业因素的影响,从而不遵守地理就近的原则.比如,从哈尔滨工业大学教育网向北京网通发送数据时,路由路径甚至会经过广州的路由器.其次,通常网络链路的延迟分为固有延迟和可变延迟,固有延迟即信号在线路上传输所消耗的时间,本方法就利用了固有延迟的这一特点;可变延迟指数据包在传输沿途所经过的网络设备(如交换机、路由器、防火墙等)中消耗的时间,它主要取决于网络设备当时的负载情况,是一个不断变化的量.在特定网络环境下,可变延迟可能在总延迟中占有较大的比重.综上考虑,

根据地理位置的方法对就近抓取的贡献是十分有限的。

(4)基于网络位置

提到网络位置,一个很直观的想法就是利用网站的IP地址,因为IP地址本身就是一个带有层级关系的描述符,很容易建立起树状分类结构.但是,由于IP地址分配时的随机性,可能IP地址相近的两台主机在网络位置和物理位置上并不相近,甚至分布在两个不同的国家.所以,IP地址并不能代表网络位置,单纯通过IP地址进行Web划分并不是理想的选择.另一个想法是利用网络中的自治域(autonomous system,简称AS),这是一种由运营商或组织建立的Intemet的子网.通常认为,自治域内的节点间网络互联质量较高.但是与IP地址一样,由于自治域并非网络距离上的概念,其构建过程综合了人力、物力、财力等诸多因素.所以,在同一个自治域中的节点并不能保证其网络距离相对较近.比如,中国的教育网(China Education and Research Network,简称CERNET)只由一个自治域构成,由于全国各地的高校都接入该网,使得这个自治域与中国的国土面积~样庞大,难以保证自治域内节点间的高效通信。

IPMicra提出利用RIRs(regional internet registries)记录的运营商、子网等信息对IP地址进行分类,建立一个有层级关系的分类树.由于RIRs是非政府组织,没有强制执行的权利,所以它的记录完整性是一个很大的问题.在实验中我们发现,RJR5的记录并不全面并且不能实时更新.利用RIPs这种第三方服务的好处是能够获得更多的信息指导Web划分,并且系统开发者不需要自己去寻找这些信

息;但是,第三方服务通常提供的是比指导Web划分更加通用的功能,并且其提供的信息往往是不完备的,因此其达到的效果有一定的限度.

除了上述方法以外,基于网络位置的Web划分还有两个潜在的研究方向:网络拓扑和网络距离预测.网络拓扑是网络的逻辑模型,通常以图的方式表示.网络中的主机和路由器对应图中的节点,主机和路由器之间的链路对应图中的边(有向或无向),链路上的带宽、延迟等参数对应边的权重.完成对网络拓扑图的划分实际上也就完成了Web划分,并且由于爬虫只关心网络中的Web服务器,不关心普通主机,因此相对于划分全网的拓扑图,为爬虫系统计算Web划分的工作量要小很多,虽然从绝对数量来说仍然很大.在实践上,一般采取traceroute 等方法来获取网络拓扑;在学术上,还可以通过网络模拟器等方法进行研究,划分方法涉及图的划分和聚类等.哈尔滨工业大学开发的大规模网络拓扑结构自动发现系统在这方面取得了一定的研究成果.

网络距离预测是一种建立网络端到端模型的思路.最早进行网络距离预测的是IDMapstl9,201项目.它采用类似三角不等式的方法,通过分布于网络中的若干Tracer估算出Internet中任意两个IP之间的网络距离.但是,这种对端到端距离的估算难以完成对全网的建模.于是,网络坐标的概念应运而生.网络坐标研究的目标是将Internet 映射为多维几何空间,为Intemet上的每个主机分配一个几何空间坐标,使各个主机间的坐标距离尽可能地与其实际网络距离相同.最早提出网络坐标概念的是GNP项目,后来又涌现出NPS,PIC,

LightHouse,Vivaldi(弓I文)等系统,进一步优化了网络坐标系统的性能、精度和健壮性.对于网络坐标来说,Web划分就是将几何空间中的坐标点划分为多个集合,也是一个聚类的过程.但是,网络坐标方法具有网络拓扑方法所不能比拟的优势:

(1)建模开销小,生成网络坐标需要的网络通信量远远小于生成网络拓扑时用到的通信量;

(2)端到端的网络距离估算速度快,仅需要通过一个基于坐标的计算公式进行少量数学运算,而网络拓扑方法需要在图中做一次路径搜索.该方法的缺点是生成坐标时进行的网络测量较少,得到的网络距离值没有网络拓扑方法精确.。

2.4 Web划分实现方法

一个实际可运行的分布式Web爬虫对以上提出的几种Web划分策略需要选择程序的实现方法.Web划分的程序实现可以分为动态划分和静态划分两大类.程序选择哪种实现方法,取决于爬虫系统的设计目标、开发方已有资源等因素.

(1)静态划分

所有Web划分集合在系统启动前就已经划分完毕。在爬取过程中,当发现新URL时,爬虫根据静态配置就可以判断出这个URL属于哪个划分集合.通常在实现中,系统中所有Agent会共用一个静态划分配置文件,这个文件要么存储在一个中心节点,要么在各个Agent 上都有一份一致的拷贝.静态划分的优点是容易实现、系统内通信负载较小、抓取效率较高;缺点是不能应付如Agent意外退出等特殊事

件。不能进行动态负载均衡,可扩展性也不强.要实现静态划分的系统通常已经拥有了所要抓取的大部分网站的信息,这些信息可能来自于预先探测以及其他爬虫系统的抓取结果.

(2)动态划分

系统通过计算动态决定新发现的URL属于哪个Web划分集合,这样的系统通常需要一个调度中心节点来进行Web划分操作.有的系统(如Apoidea[”1)摒弃了中心控制节点,并实现了动态划分.这样的系统在系统架构的选择上局限性比较大,通常采用目前比较成熟的DHT算法(如Chordt等)实现.动态划分的优点是适应性强,能够应付Agent的意外退出等特殊情况,并且能够做到动态负载均衡;缺点是动态划分算法会带来大量系统内网络通信,提高了系统负载.实现动态划分既要实现Web划分策略又要兼顾系统服务质量,是一个非常有趣的研究点.无论采用何种实现方法,Web划分的实现都需要由系统中的多个Agent共同协作完成,由此引出Agent协同问题.

3 Agent协同

分布式爬虫内部多Agent间的高效协同。是分布式Web信息获取中另一个亟待深入研究的关键问题.分布式Web爬虫Agent之间协同的方法和策略称为Agent协同模式.Agent协同模式的选择对爬虫系统的设计意义重大.同时,Agent交互过程中的通信策略及URL交换方案也是非常重要的研究问题.

3.1 Agent协同模式

目前,分布式Web爬虫的Agenf协同模式主要有4种实现方式:

独立获取、有调度中心的协同、无调度中心的协同及Agent自主与调度中心辅助相结合.

(1)独立获取

系统中的每个Agent从各自预先设定的种子URL开始独立地下载网页,并不进行任何协同和Web划分.这种工作方式实现非常简单,一种可行的方案是在世界各地部署多个Agent,每个Agent(通常是一个机群)独立工作,由于各个Agent所在区域不同,其抓取策略也可以不同,以迎合当地的地域特点.但是,由于Web链接结构的复杂性,该方法造成不同Agent下载相同网页,从而大大增加了网页重复率,浪费了资源.该方案已被一些商业(3)Exchange方式本方法是被广泛接受的主流方法,适用于有调度中心及无调度中心的系统.系统中的每个爬虫各自下载自己承担的Web划分,当爬虫发现跨分区链接时,将跨分区链接发送给承担这个链接所在Web划分的爬虫.发现跨

分区链接的那个爬虫并不沿着这个链接继续抓取.这种模式与前两种相比,基本不会出现网页重复下载,并且不会丢失链接,但是其最大的缺点是实现复杂并且会产生大量的系统内通信.因此在本方式的设计中.既要实现爬虫间互相通信,又要控制爬虫间的通信量以减小系统负载。

3.3跨分区链接交换量最小化

Cho等人还指出,采用Exchange模式工作的分布式爬虫可以采用批量交换和去重“著名网页”的方法减小Agent间的跨分区链接交换量.下面结合我们的经验对这两种方法进行介绍.由于跨分区链接实

际上就是uRL,以下均简称为URL。

(1)批量交换

Agent发现跨分区链接后并不是立即将其发送出去,而是等跨分区链接积攒到一定的数量或者到达了一定的时间间隔后再批量发送,一次通信发送多个URL(aP跨分区链接),发送时需要把积攒的uRL先根据Web划分分类,不同的分类发送给不同的Agent.这里,对于积攒的URL的存储方法,可以使用内存存储、磁盘文件存储以及内存与磁盘文件相结合的存储。

批量交换有两个优点:

(1)减少总的通信次数.如果把一次Agent间通信当作一次会话,那么批量通信产生的会话次数要少于非批量通信(即每个URL单独通信).

(2)由于URL需要先在Agent本地缓存一段时间,如果在这段时间内又发现了相同的链接,则可以直接在缓存中去重,以避免或减少URL 的重复发送.我们把这个过程称为URL交换中的“发送方去重”。

发送方去重的作用是有限的,因为其范围仅限于Agem缓存的尚未发送的那些URL(即跨分区链接).如果第一次发现的链接形已经被发送,那么后来发现的矿将不会被去重,仍然造成重复发送.由于URL发送方的URL缓存大小、发送时间间隔的有限性以及Web链接结构的随机性,造成在Agem之间交换的URL中必然存在大量无法避免的重复,这就要求URL接收方必须有能力将重复接收到的uRL去重,这称为UI也交换中的“接收方去重”.接收方去重比起发送方去重更

能彻底地去除uI也重复现象,由此可见,接收方去重是为避免uRL 重复而必须实现的功能.另外,批量交换在实现中需要考虑是等uI 也积累到一定数量后才发送,还是每过一个固定的时间间隔才发送.前者每次可以发送较多的URL,但是如果长时间凑不齐规定的URL 数量会导致长时间无法进行URL交换;后者由于没考虑到uRL数量,所以有可能一次只发送很少的URL,多浪费了带宽,还可能一次发送太多的URL,造成瞬间网络负载过大.较好的办法是两者同时使用,即等URL积累到一定数量后才发送,但是如果到达了固定的间隔时间还没有凑齐规定的URL数量,就将现有的URL全部发送.或者反过来,即每过一个固定的时间间隔才发送,但是如果间隔时间到来之前URL 数量就已经达到上限,则不等时间到来直接发送.数量和时间这两

个参数必须根据系统规模、吞吐能力、网络坏境等情况进行调优.(2)去重“著名网页”

指向特定网页的链接称为该网页的“进入链接(incoming linls)”.研究表明,Web上的进入链接的数量符合zipf分布,即只有少数网页拥有大量的进入链接,而大部分网页的进入链接数很少,也就是引用量很小.这里,我们把进入链接多的网页称为“著名网页”.如果能够对“著名网页”的URL进行较好的去重,则能在一定程度上减少Agent间的URL交换量,因为大量URL(跨分区链接)都是指向这些“著名网页”的.“著名网页”可以根据网站知名度采用手工配置的方法,但是手工方法很可能漏掉许多网页,所以可以要求Agent在工作过程中实时地发现“著名网页”.一种实现方案是:在

每个Agent上都建立一个独立的“已发送URL缓存”,用来缓存在以前一段时间内发送过的跨分区链接.在这个缓存上,可以按照发现次数将所有URL进行排队。发现次数最多的uRL(比如达到某个上限值),将被视为是指向“著名网页”的URL,从而可以考虑用特殊的方式对这个URL进行去重.在具体实现中,可以将URL在缓存中的寿命与uRL的发现次数挂钩.这样,URL越“著4 Agent部署Agent部署是广域网分布式爬虫系统的底层问题,本节针对真实系统的部署方案展开论述.

4.1使用可控平台和专用网络

广域网分布式爬虫系统可以架设于科研机构和企业自己所拥有的可控平台之上.这样的企业级基础设施通常拥有较高的节点间互联速度,各个节点的使用情况较为可控,节点的加入和退出会有全局登记和通知,由专人负责.这些特性使得爬虫程序在设计时可以采用相对简单的策略,比如采用静态划分、采用有调度中心的

Agent协同等.为了提高系统性能,可以通过专用网络而不是Internet对分布在各处的Agent进行互联.{艮多科幻作品中常

有这样的情节:在宇宙中航行的飞船可以通过一种“超空间”,快速地从宇宙的A位置跳跃到B位置,跳跃所消耗的时间远远小于航行A 位置与B位置之间直线距离所用的时间.这种“快速通道”在物理世界中还难以实现,但是在Internet上却是确确实实存在的现象.使用专用网络,理论上就可以实现这样的“超空间”.专用网络虽然跨越了较大的物理距离,但是网络通信效率很高.由于专用网络中节点

比较少,因此也不会出现像Internet那样的网络拥塞.如果把这一特性加以利用,比如Agent下载网页使用Internet,而Agent间通信以及其他数据传输使用专用网络,则会大大提高系统效率.我们曾经利用CNCERT的专用网络测量了北京与广州之间的网络延迟,结果如图2所示.该专用网络上的节点之间可以通过专用网络互联(使用私网IP),也可以通过Internet互联(使用公网IP).对比图上方的一组延迟值是使用私网IP在专用网络上获得的,下方的一组延迟值是使用公网IP在Intemet上获得的.实验结果显示,可控平台和专用网络带来的最大缺点是维护开销较大.对于广域网分布式系统,更是需要企业同时在多个物理位置维护多组这样的可控平台.因此,一些小规模的公司和研究团体只能寻求更加节省开销的解决方案.另一个缺点是部署环境受限:首先,如何找到空间安放设备是一个复杂的问题;其次,由于当地网络结构的限制,可控平台的网络接入点环境很难达到预期的效果.在实践中。我们甚至遇到过数据包在一座大楼中跨越多个网络自治域又返回原自治域的情况.很多情况下,这类问题不是技术所能解决的.

4.2利用普通网络用户的资源

利用互联网用户的闲散资源是分布式计算的重要目标,同样也可以应用到广域网分布式爬虫系统中.类似于已经非常成熟的P2P文件共享应用,一些系统的部署环境不是基于专用平台,而是私人拥有的个人电脑.网络用户从特定网站下载安装程序并安装后,即可将其个人电脑变成爬虫系统中的一个Agent,参与到整个爬虫系统的工作

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 0 4.1 设计环境和目标分析 0 4.1.1 设计环境 0 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (1) 4.3 控制模块详细设计 (2) 4.3 爬虫模块详细设计 (2) 4.3.1 URL管理器设计 (2) 4.3.2 网页下载器设计 (2) 4.3.3 网页解析器设计 (2) 4.4数据输出器详细设计 (3) 5 调试与测试 (3) 5.1 调试过程中遇到的问题 (3) 5.2测试数据及结果显示 (4) 6 课程设计心得与体会 (4) 7 参考文献 (5) 8 附录1 网络爬虫程序设计代码 (5) 9 附录2 网络爬虫爬取的数据文档 (8)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计 在本爬虫程序中共有三个模块: 1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况 2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。 (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL 管理器中取出一个待爬取的URL,传递给网页下载器。 (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。 (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器 3、数据输出模块:存储爬取的数据 4 网络爬虫程序详细设计 4.1 设计环境和目标分析 4.1.1 设计环境

基于python的网络爬虫设计

基于p y t h o n的网络爬虫 设计 Last updated on the afternoon of January 3, 2021

基于python的网络爬虫设计 【摘要】近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的利益,而网络爬虫是其中最为常用的一种从网上爬取数据的手段。网络爬虫,即WebSpider,是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。那么,既然网络爬虫有着如此先进快捷的特点,我们该如何实现它呢?在众多面向对象的语言中,首选python,因为python是一种“解释型的、面向对象的、带有动态语义的”高级程序,可以使人在编程时保持自己的风格,并且编写的程 序清晰易懂,有着很广阔的应用前景。 关键词python爬虫数据 1前言 本编程设计的目的和意义 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(例如传统的通用搜索引擎AltaVista,Yahoo!和Google等)作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。(2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。(3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。(4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(generalpurposewebcrawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 编程设计目及思路 学习了解并熟练掌握python的语法规则和基本使用,对网络爬虫的基础知识进行了一定程度的理解,提高对网页源代码的认知水平,学习用正则表达式来完成匹配查找的工作,了解数据库的用途,学习mongodb数据库的安装和使用,及配合python的工作。 (1)以世纪佳缘网为例,思考自己所需要的数据资源,并以此为基础设计自己的爬虫程序。 (2)应用python伪装成浏览器自动登陆世纪佳缘网,加入变量打开多个网页。 (3)通过python的urllib2函数进行世纪佳缘网源代码的获取。 (4)用正则表达式分析源代码,找到所需信息导入excel。

网络爬虫的设计与实现(完整版)

网络爬虫的设计与实现

摘要 网络爬虫将下载的网页和收集到的网页信息存储在本地数据库中以供搜索引擎使用,它是一个专门从万维网上下载网页并分析网页的程序。随着网络的快速发展,人们对搜索引擎的要求也越来越高,而网络爬虫的效率直接影响着搜索引擎的质量。 本课题研究的是通用网络爬虫,它是从一个或若干个初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页中抽取新链接放入到链接队列中,直到爬虫系统满足了停止条件。该课题主要涉及到了缓冲池技术,多线程技术,套接字技术,HTTP和SSL协议,正则表达式,Linux网络编程技术,PHP+Apache的使用等相关技术。 本说明书叙述的网络爬虫是以Linux C实现的,加以PHP语言编写的界面使用户更加方面的操作,利用Shell脚本和Apache服务器使得爬虫系统和界面很好的结合在一起。 关键词:网络爬虫缓冲池正则表达式 SSL协议多线程

目次 1 引言 (1) 1.1 课题选题背景 (1) 1.2 课题研究的意义 (2) 2 需求分析 (3) 2.1 功能需求分析 (3) 2.2 系统性能分析 (4) 3 系统设计 (5) 3.1 系统工作流程图 (5) 3.2 数据结构设计 (6) 3.3 系统各功能流程图 (7) 4 系统实现 (10) 4.1 相关技术分析 (10) 4.2 系统功能模块的实现 (11) 5 测试与结果 (17) 结论 (23) 致谢............................................................................................ 错误!未定义书签。参考文献. (24)

分布式爬虫实验设计文档

分布式网络爬虫实验 五组赵成龙、黄莹 一、需求分析 (2) 二、实验架构及原理 (2) 三、模块设计及代码实现 (3) 爬取网页模块设计 (3) < DNS解析 (4) Socket连接 (4) 发送HTTP请求头并获得相应 (6) 网页解析模块设计 (7) 正则表达式的设计 (8) 测试用例的设计 (8) 利用Regex库提取网页URL (8) 利用Pcre库提取网页URL (10) 》 四、心得体会 (12)

一、需求分析 随着国际互联网的迅速发展,网上的信息越来越多,全球网页数量超过20亿,每天新增加730万网页。要在如此浩瀚的信息海洋里寻找信息,就像“大海捞针”一样困难。在实际生活中我们经常会使用像百度、Google这些搜索引擎检索各种信息,搜索引擎正是为了解决这个问题而出现的技术,而网络爬虫正是搜索引擎所需要的关键部分既然百度、Google这些搜索引擎巨头已经帮我们抓取了互联网的大部分信息,为什么还要自己写爬虫呢因为深入整合信息的需求是广泛存在的,在企业中,爬虫抓取下来的信息可以作为数据仓库多维展现的数据源,也可以作为数据挖掘的来源,甚至有人为了炒股,专门抓取股票信息。这些实际问题的解决所需要的根本技术就是分布网络爬虫。 本次实验主要的内容就是利用IO复用抓取网页,并多线程的分析每个抓取到的网页所包含的URL信息,通过消息队列将抓取网页的部分和分析网页部分进行通信,最终记录下160000网页中所包含的所有URL,实现分布式网络爬虫。 》 二、实验架构及原理 本实验分为两个模块:爬取网页模块、网页分析模块。实验架构如图所示

图分布是网络爬虫框架 爬取网页模块采用socket通信方式实现客户端与服务器的通信:首先将客户端与服务器进行三次握手后建立连接,客户端发送HTTP请求头,服务器端收到客户端请求后,进行HTTP响应,发送相应的网页信息,客户端收到服务器的响应后将所获得网页文件交给网页分析模块进行处理并提取URL。流程图如图所示: 图爬取网页模块流程图 网页分析模块主要工作如下图流程图所示。而本模块的网页分析处理主要在于对抓取到的HTML文件的内容进行URL的提取,我们主要运用正则表达式进行字符串的匹配操作。通过采用Regex正则表达式库和Pcre正则表达式库进行了两种尝试,并根据网页的情况设计了测试用例,进行程序的检验。 !

JAVA基于网络爬虫的搜索引擎设计与实现

本科毕业设计 题目:基于网络爬虫的搜索引擎设计与实现 系别: 专业:计算机科学与技术 班级: 学号: 姓名: 同组人: 指导教师:教师职称:协助指导教师:教师职称:

摘要 本文从搜索引擎的应用出发,探讨了网络蜘蛛在搜索引擎中的作用和地住,提出了网络蜘蛛的功能和设计要求。在对网络蜘蛛系统结构和工作原理所作分析的基础上,研究了页面爬取、解析等策略和算法,并使用Java实现了一个网络蜘蛛的程序,对其运行结果做了分析。 关键字:爬虫、搜索引擎

Abstract The paper,discussing from the application of the search engine,searches the importance and function of Web spider in the search engine.and puts forward its demand of function and design.On the base of analyzing Web Spider’s system strtucture and working elements.this paper also researches the method and strategy of multithreading scheduler,Web page crawling and HTML parsing.And then.a program of web page crawling based on Java is applied and analyzed. Keyword: spider, search engine

基于主题的网络爬虫系统的研究与实现

基于主题的网络爬虫系统的研究与实现 摘要针对高校软件教学中有效学习资源获取困难的现状,拟通过对开源的网络爬虫框架Heritrix进行二次开发,在爬虫的网络资源识别、数据筛选等功能点上开展研究工作,提出一种基于主题的数据采集方案,并在此基础上实现一种基于指定主题的网络爬虫系统,以满足高校软件教学对高质量学习资源的需求。 关键词学习资源;网络爬虫;Heritrix Research and Implementation of Topic - based Web Crawler System Tan xiang-wei South China Institute of Software Engineering,Guangzhou University Guangzhou 510990,China Abstract In view of the difficulty of acquisition of effective learning resources in the software teaching of colleges and universities,it is proposed to carry out the secondary development of Heritrix,an open-source web crawler framework,and carry out research work on the reptile network resource identification and data selection,etc.,and propose a theme- Data acquisition program,and on this basis to achieve a designated theme based on the network crawler system to meet the software teaching of high-quality learning resources needs. Key words Learning resources;web crawler;Heritrix 引言 现在高校软件专业的教学活动开展越来越离不开网络,体现在教师课前备课需要上网搜索相关的课程资源、学生课后自学需要上网获取对应的学习资源。但是现在网络上的资源参差不齐,很多找到的资源并不符合学习的需要,要么是时效性较差要么就是重复互相引用的内容,师生大量的时间精力浪费在学习资源数据采集这一活动上,导致教学活动的高效开展出现瓶颈。所以使用网络爬虫帮助师生提高学习资源采集的效率就显得具有良好的价值和意义[1]。 传统网络爬虫虽然能较为便捷地获取网络上的资源,但是缺乏定制的话普遍带有盲目性,很多资源并不是用户所需要的,需要花费大量的时间精力来做数据的分析筛选提取操作;加之现在网络学习资源越来越丰富,不可避免地会出现同质化的问题,增加了数据分析的难度;大数据背景下,数据的更新越来越快,数据的体量也越来越大,无形中也降低了传统网络爬虫采集有效数据的效能[2]。 针对上述传统网络爬虫的问题,本文提出利用开源的Heritrix框架进行主题相关性定制开发的研究方案,以某高校校内学习资源共享平台为例,设计一种能

海量网页爬虫系统设计报告

华 中 师 范 大 学 研 究 生 课 程 论 文 论文题目 海量网页爬虫系统设计报告 完成时间 课程名称 自然语言处理 专 业 年 级 注:研究生须在规定期限内完成课程论文,并用A4页面打印,加此封面装订成册后,送交评审教师。教师应及时评定成绩,并至迟在下学期开学后两周内将此课程论文及成绩报告单一并交本单位研究生秘书存档。 成 绩 评卷人 姓 名 学 号

自然语言处理课程爬虫系统技术报告 引文:本学期上完自然语言处理课程受益良多,总体上了解了自然语言处理 各个方向和领域。要做自然语言处理方面的研究。首先海量的文本数据是必须的。因此网页爬虫系统显得十分重要,另外网络爬虫也是搜索引擎抓取系统的重要组成部分。 爬虫总体系统介绍:爬虫系统主要分两大类,一种是自定义爬虫系统,还 有一种是利用开源爬虫软件。其中开源爬虫软件有很多例如:Grub Next Generation PhpDig Snoopy Nutch JSpider NWebCrawler。因为是初学爬虫,所以先暂时不想套用别人的开源代码,虽然自己一步步编的系统可能系能上不如,但是这样是自己对其中一些原理有更深的领会。因此,笔者通过网上博客和一点点查资料写了这个系统。虽然还有待完善,但也是倾心之作。最后还和其他爬虫系统做出了一些对比。 关于本技术报告描述的爬虫系统的详细介绍:本系统采用java代码编 写,myeclipse8.5的IDE工具win7操作系统。 原理:不管是自定义系统还是开源软件。爬虫的基本原理都是一样的,且并不复杂。爬虫就是从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL2.将这些URL放入待抓取URL队列;3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。4.分析已抓取URL 队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环。 在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL 以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。主要是有两种抓取策略:1.深度优先遍历策略:深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。 2.宽度优先遍历策略宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。 系统总体工程说明:系统project说明:系统源代码总共分五个部分。分别是:1、数据处理类,javabean部分,封装了要提取的数据集结构;2、核心类:也就是对获取的URL利用jsoup对其进行类容获取。并将数据集以LinktypeData arraylist数组形式存储,这也是爬虫系统中最核心的部分;3、规则类,本类是为了代码的复用而编写的,其实这个部分可以直接放在核心类中,为了该系统的复用性编写本类,就是对URL的规则,参数,调用方法(get post)jsoup查询定位

分布式网络爬虫技术分析与实现

1990年以前,没有任何人能搜索互联网。所有搜索引擎的祖先,是1990年由Montreal的McGill University学生Alan Emtage,Peter Deutsch.BillWheelan发明的Archie(Archie FAQ)。一个可以用文件名查找文件的系统,于是便有了Archie.Archie是第一个自动索引互联网上匿名FTP网站文件的程序,但它还不是真正的搜索引擎。1995年12月,Altavista永远改变了搜索引擎的定义。AltaVista是第一个支持自然语言搜索的搜索引擎,AltaVista是第一个实现高级搜索语法的搜索引擎(如AND,OR,NOT等)。用户可以用Altavista搜索Newsgroups新闻组)的内容并从互联网上获得文章,还可以搜索图片名称中的文字、搜索Titles、搜索Javaapplets、搜索ActiveX objects.许多关于网络爬虫的论文都在第一届和第二届World Wide Web conferences被发表。1998年,Google在Pagerank、动态摘要、网页快照、DailyRefresh、多文档格式支持、地图股票词典寻人等集成搜索、多语言支持、用户界面等功能上的革新,象Altavista一样,再一次永远改变了搜索引擎的定义。至2005年4月21为止,Google中所收集的Web页面数量已经达到8,058,044,651张。现阶段,出现了Ask Jeeves,https://www.doczj.com/doc/4d2114116.html,,https://www.doczj.com/doc/4d2114116.html,,MySimon,Dito等内容类别不同的搜索引擎。 2搜索引擎的发展现状与趋势 目前,大多数的搜索引擎都是基于关键词的搜索引擎。基于关键字匹配的搜索技术有较大的局限性:首先,它不能区分同形异义。其次,不能联想到关键字的同义词[9]。 Web商业化至今,搜索引擎始终保持着网络上被使用最多的服务项目的地位,然而,随着网上内容的爆炸式增长和内容形式花样的不断翻新,搜索引擎越来越不能满足挑剔的网民们的各种信息需求。这表现在以下几个方面: (1)搜索引擎对自然语言提问没有理解能力。 (2)搜索引擎收集的网页数量和其数据库的更新速度存在着不可调和的矛盾。 (3)搜索引擎无法与电子商务紧密结合。 (4)搜索引擎对多媒体内容的处理尚不成熟。 搜索引擎的发展面临着两大难题:一是如何跟上Internet的发展速度,二是如何为用户提供更精确的查询结果。所以,传统的引擎不能适应信息技术的高速发展,新一代智能搜索引擎作为一种高效搜索引擎技术的在当今的网络信息时代日益引起业界人士的关注。搜索引擎己成为一个新的研究、开发领域。因为它要用到信息检索、人工智能、计算机网络、分布式处理、数据库、数据挖掘、数字图书馆、自然语言处理等多领域的理论和技术,所以具有综合性和挑战性。又由于搜索引擎有大量的用户,有很好的经济价值,所以引起了世界各国计算机科学界和信息产业界的高度关注,目前的研究、开发十分活跃,并出现了很多值得注意的动向。 1.自然语言理解技术 自然语言理解是计算机科学中的一个引人入胜的、富有挑战性的课题。从计算机科学特别是从人工智能的观点看,自然语言理解的任务是建立一种计算机模型,这种计算机模型能够给出像人那样理解、分析并回答自然语言。以自然语言理解技术为基础的新一代搜索引擎,我们称之为智能搜索引擎。由于它将信息检索从目前基于关键词层面提高到基于知识(或概念)层面,对知识有一定的理解与处理能力,能够实现分词技术、同义词技术、概念搜索、短语识别以及机器翻译技术等。因而这种搜索引擎具有信息服务的智能化、人性化特征,允许网民采用自然语言进行信息的检索,为它们提供更方便、更确切的搜索服务。 2.十分注意提高信息查询结果的精度,提高检索的有效性 用户在搜索引擎上进行信息查询时,并不十分关注返回结果的多少,而是看结果是否和自己的需求吻合。对于一个查询,传统的搜索引擎动辄返回几十万、几百万篇文档,用户不得不在结果中筛选。解决查询结果过多的现象目前出现了几种方法: (1)是通过各种方法获得用户没有在查询语句中表达出来的真正用途,包括使用智能代

网络爬虫的系统实现

简述网络爬虫的系统实现 网络爬虫常常被人所忽略,特别是和搜索引擎的光环相比,它似乎有些暗淡无光。我很少看见有详细介绍爬虫实现的文章或者文档。然而,爬虫其实是非常重要的一个系统,特别是在今天这个数据为王的时代。如果你是一个刚刚开始的公司或者项目,没有任何原始的数据积累,那么通过爬虫去Internet上找到那些有价值的数据再进行数据的清洗和整理,是一个可以快速得到数据的重要手段。 本文侧重于爬虫的系统设计和实现的部分细节,内容来源于两方面,一是我这一个多月做爬虫的心得体会,但我做的爬虫规模不至于太大,对于性能的要求达不到诸如百度那么高的要求,第二则是来源于阅读的几篇文献。我找到的大部分关于爬虫的系统方面的文献都是2000年左右的,此后寥寥无几,说明关于爬虫的系统设计在10年前已经基本解决了(2000年不就是Baidu刚开始的时候么,说不定它家的爬虫也参考了这些文章^-^)。 此外,既然本文侧重于系统方面的问题,那么某些内容就不会涉及,比如如何抓取那些隐藏的web数据,如何抓取ajax的页面,如何动态调整抓取频率等等。 正文 一个正规的,完整的网络爬虫其实是一个很复杂的系统:首先,它是一个海量数据处理系统,因为它所要面对的是整个互联网的网页,即便是一个小型的,垂直类的爬虫,一般也需要抓取上十亿或者上百亿的网页;其次,它也是一个对性能要求很好的系统,可能需要同时下载成千上万的网页,快速的提取网页中的url,对海量的url进行去重,等等;最后,它确实是一个不面向终端用户的系统,所以,虽然也很需要稳定性,但偶然的当机并不会是灾难,而且,不会出现类似访问量激增这样的情况,同时,如果短暂的时间内出现性能的下滑也不算是个问题,从这一点来看,爬虫的系统设计在某些部分又变得简单了许多。

高性能网络爬虫系统的设计与实现

2019年4月 件实力较强的大型企业,应该在这方面做出更多的努力和贡献,推动小基站的发展走向成熟。 3总结 目前,各厂商相继推出了自家第一代或第二代小基站产品,系统也日渐完善,预计后续将会有更丰富的产品形态面市。运营商深度覆盖将在2015年逐步展开,2016年开始增量,2017年完成大部分场景的覆盖。小基站是深度覆盖的有效发展方案,针对这一工程项目的建设发展,还需要解决一些关键性问题,才能推动小基站建设的有效实现,切实提升通信质量和效率。 参考文献 [1]唐耀生.LTE数字直放站在深度覆盖中的施工方案研究[J].江苏通信,2017,33(03):48-50+54. [2]袁康鹏,赵霞,王业通,俞沁璐.网络数据在数字直放站中融合传输 的设计[J].系统仿真技术,2015,11(01):57-62+68. [3]梁长松.基于MIMO的LTE数字直放站技术研究及系统应用[J].电 子世界,2013(17):14-15. [4]李学易,郝禄国,杨建坡,马绍轩.同频数字直放站回波干扰消除器 的设计[J].电视技术,2010,34(07):16-19. [5]李莉金,梅顺良.数字直放站锁相源的杂散问题解决方案[J].微计算 机信息,2008(15):1-2+8. [6]任姝婕,吴泽民,都明,郑军.3G数字直放站传输接口标准的分析[J].现代电子技术,2005(23):7-9+13. 收稿日期:2019-3-11 高性能网络爬虫系统的设计与实现 宗靖芯(西安交通大学附属中学,陕西省西安市710043) 【摘要】随着互联网的迅速发展,网络承载着大量的信息,但在这些信息里如何有效的提取并利用它们成为技术发展的关键点。因为用户在使用互联网的时候经常有不同的检索要求,但是检索引擎所返回的结果中往往含有许多用户不关心的网页及信息,所以定向抓取相关网页的爬虫系统应运而生。但是现在网络上的主流爬虫系统有的配置复杂,用户难以上手如Heritrix,或有的只能爬取特定字段,限于个别浏览器使用。所以为了优化爬虫系统,本文提出了一套高性能的定向网络爬虫系统,意在提高爬取数据的效率和准确度,并在初步实验中取得了较好成果。 【关键词】分布式;高可用;网络爬虫 【中图分类号】TP391.3【文献标识码】A【文章编号】1006-4222(2019)04-0078-02 1引言及研究背景 随着互联网技术的迅速发展,网络承载了大量的信息,如何有效地提取并利用这些信息成为一个巨大的挑战。在众多传统的搜索引擎如Google Yahoo Alta Vista等,这些常用辅助人们检索信息的工具作为访问互联网的渠道和入口,也有一定的局限性。比如:①检索引擎所返回的结果中往往含有许多用户不关心的网页及信息;②在进行网络检索时,我们希望的是尽可能大的网络覆盖率,但是在有限的搜索引擎服务器资源和无限的网络数据资源之间由于资源配置的不同,所以他们之间的矛盾进一步加深。为了解决以上问题,定向抓取相关网页资源的爬虫系统应运而生。 爬虫系统可以自动下载相关网页,根据相应的信息及人们发出的指令制定所要抓取目标。它可以有选择性的访问互联网上的网页与相关的链接,然后再解密出所需要的信息数据。在经过了实践研究以及用户上手的市场调研后,网络爬取逐渐从通用爬虫转变到聚焦爬虫。在不断进化的过程中,爬虫系统起先并不那么追求较大的网络发概率,而是将目标定为爬取与某一特定主题内容相关的信息,并为主体的用户准备查询的数据资源。 从爬虫技术发展的历史来看,第一个爬虫程序诞生于1993年,是由麻省理工学院的学生马休·格雷所编写。此时爬 虫只是一种自动抓取网页信息的机器人的简称,但格雷在写爬虫程序时,起初目的却并不是为了做搜索引擎,但是却为搜索引擎发展提供了坚实的基础。在搜索引擎技术发展中爬虫的算法越来越复杂,在设计中逐渐向多策略、负载均衡及大规模增量抓取等方面来发展。爬虫算法的优化成果,可以涉及到整个互联网中。而且有些被删除的网页也可以通过爬虫程序内的“网页快照”功能实现访问及恢复。 爬虫的应用前景也十分广阔。比如将爬虫应用到数据挖掘中,来获取数据背后隐藏的价值信息;高性能的爬虫技术在处理海量的数据时往往发挥十分重要的作用。而且分布式技术的应用也能帮助处理海量数据,并当数据存储较散不能集中到一起时发挥重要的集群及搜寻作用。未来爬虫也将在人工智能、模式识别和机器学习等领域大展身手。 2现有爬虫系统的分析 现有的网络爬虫系统有很多如Watij、JRex、JSoup再到后来的Htpp Client和目前的Html Unit,这些系统各有优劣,其中用来评判的标准大多为同一网页的获取时间、解析时间、存储信息时对内存和CPU的占用,及是否支持脚本等。爬虫系统可以应用在大规模的数据爬取,可以从网页中抓取各式各样自己需要的数据,相当于能够自动访问互联网并将网站内容下载下来的程序或脚本,也相当于一个没有图形页面的独立浏览器。 但是因为爬虫系统运行时间过长,所以如果它没有良好的框架结构,就会影响到后续数据的存储。主流爬虫系统的缺点有:①系统严重依赖XPath,不能判别所爬取信息的重要度和价值;②爬虫采用插件模式,系统在每个站点都设置了一个插件,可以用此来保证爬取数据的准确性,但是由于爬取广度小所以系统缺乏在大规模的网络中爬取的能力;③系统不支持集群化的数据处理;④在爬取时由于采用关系型数据库,所以没有使用NOSQL固定的数据库;⑤系统不支持robots协议可能侵犯信息所有人权益所以基于以上缺点,我提出了一种高性能的分布式网络爬虫模型。 3实验思路 3.1模板爬虫的框架策略 通信设计与应用78

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计范文

山东建筑大学计算机网络课程设计基于Python的网络爬 虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 (1) 4.1 设计环境和目标分析 (1) 4.1.1 设计环境 (1) 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (2) 4.3 控制模块详细设计 (3) 4.3 爬虫模块详细设计 (3) 4.3.1 URL管理器设计 (3) 4.3.2 网页下载器设计 (4) 4.3.3 网页解析器设计 (5) 4.4数据输出器详细设计 (6) 5 调试与测试 (6) 5.1 调试过程中遇到的问题 (6) 5.2测试数据及结果显示 (7) 6 课程设计心得与体会 (7) 7 参考文献 (8) 8 附录1 网络爬虫程序设计代码 (8)

9 附录2 网络爬虫爬取的数据文档 (15)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计

网络爬虫工具如何爬取网站数据

https://www.doczj.com/doc/4d2114116.html, 网络爬虫的基本原理是什么 目前网络爬虫已经是当下最火热的一个话题,许多新兴技术比如VR、智能机器人等等,都是依赖于底层对大数据的分析,而大数据又是从何而来呢?其中最常用的手段即是使用网络爬虫工具去获取。提起网络爬虫工具,很多小伙伴还可能没这么接触过。本文将解决以下问题:网络爬虫是什么,基本原理是什么;网络爬虫工具是什么;八爪鱼采集器是什么;三者的关系是什么。 先上重点:八爪鱼是一个网页采集器,网页采集器是一种专门的爬虫工具。 爬虫、网页采集器、八爪鱼关系图

https://www.doczj.com/doc/4d2114116.html, 一、网络爬虫是什么,原理是什么 爬虫是什么:网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。又被称为网页蜘蛛,聚焦爬虫,网络机器人。在FOAF社区中间,更经常的称为网页追逐者,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 爬虫工作原理:网络爬虫系统一般会选择一些比较重要的、出度(网页中链出超链接数)较大的网站的URL作为种子URL集合。以这些种子集合作为初始URL,开始数据抓取。 其基本工作流程如下: 1)将这些种子URL集合放入待抓取URL队列。 2)从待抓取URL队列中,取出待抓取URL,解析DNS,并且得到主机的ip,并将URL 对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。3)分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL 队列,从而进入下一个循环。如此反复进行,直到遍历了整个网络或者满足某种条件后,才会停止下来。

https://www.doczj.com/doc/4d2114116.html, 爬虫工具原理 二、网页采集器是什么八爪鱼采集器是什么 网页采集器:这里讲的网页采集器,专门指会根据用户的指令或者设置,从指定的网页上获取用户指定内容的工具软件。严格来讲,这里说的网页采集器也是爬虫的一种。 八爪鱼采集器:八爪鱼采集器就是一种网页采集器,用户可以设置从哪个网站爬取数据,爬取那些数据,爬取什么范围的数据,什么时候去爬取数据,爬取的数据如何保存等等。 八爪鱼采集的核心原理是:模拟人浏览网页,复制数据的行为,通过记录和模拟人的一系列上网行为,代替人眼浏览网页,代替人手工复制网页数据,从而实现自动化从网页采集数据,然后通过不断重复一系列设定的动作流程,实现全自动采集大量数据。 八爪鱼采集器可应对各种网页的复杂结构(AJAX页面、瀑布流等)和防采集措施(登录、

面向热点新闻的爬虫系统设计与实现

Experience Exchange 经验交流 DCW 261 数字通信世界 2019.01 1 引言 在这信息如此庞杂的时代要使热点新闻信息更易于查询,易于获取。用爬虫程序实现热点新闻高效、快速而便捷的获取与整合。通过建立网站的方式来展示获取的新闻信息。为了让用户定制个人信息获取偏好、保存历史记录等功能,而编写了用户模 块[1-2]。 2 热点新闻的爬虫系统设计原理与创新 网络爬虫是通过程序或脚本借助现有爬虫技术或工具编写的系统,该系统将有目的性的自动抓取互联网信息[3]。网络检索功能起于互联网内容爆炸性发展所带来的对内容检索的需求。搜素引擎不断发展,人们的需求也不断提高,网络信息搜索已经成为人们每天都有进行的内容。如何使搜索引擎能够时刻满足人们的需求?最初的检索功能通过索引站的方式实现,从而有了网络机器人[4]。本项目来源于新闻爬虫系统项目的建设,旨在为相关机构或个人提供及时的网络信息服务。2.1 设计原理(1)利用Python 语言结合该语言的相关库或技术如Requests/ urllib 等编写爬虫系统[5]。系统可以定期的对几个大型的新闻发布平台进行广度优先的爬取策略来增量获取新闻数据。 (2)采用Xpath/Re/BeautifulSoup 库对获取到的新闻数据进行关键字段提取。其中关键字段有新闻标题、编辑者、发布平台、发布时间等,之后再将这些关键字段与新闻图片、正文内容一并存储与本地,等待进一步操作。 (3)使用python 的pymysql 库对MySQL 数据库进行对接。(4)通过Flask web 框架构建网站,负责为用户需求而控制和调度相应的模块以及对MySQL 数据库中资源的调用与整合,为实现前端页面的对接实现不同使用场景下的多种数据请求接口:由用户通过URL 请求时,服务器端将直接返回相应的HTML 页面;若碰到特殊的需求需要使用异步传输时,将返回以JSON 格式封装的数据,在前端通过JavaScript 脚本语言对其进行相应处理。 (5)前端界面利用Python 的Jinja2模板引擎以及Bootstrap/AJAX/JQurey 等相关技术实现,兼顾用户交互方式的多样性以及 系统的跨浏览器兼容性。2.2 爬虫程序编写逻辑 本文中的基于网络爬虫的热点新闻发布系统可以简单的理解为,对新闻发布平台的众多的新闻页面格式化——根据需要提取该新闻页面中的关键信息。因此,为了让程序更加易读、更容易拓展,在爬虫设计之初先编写了一个Website 类,供后续爬虫程序拓展。 图1 Website 类图 在此类中根据系统需要,主要提取新闻页面的链接、新闻发布时间、新闻标题、新闻来源、新闻编辑、新闻内容、新闻类型。根据上述程序,针对相应的新闻发布平台编写相应的爬虫类实现Website 类中的抽象方法。其中,getLinks ()与fromRank ()方法用于在对应新闻发布平台遍历新闻页面。当后续程序需要批量爬取新闻页面时只需调用getParams ()方法即可。 3 热点新闻发布系统设计与实现 3.1 数据爬取 在本系统中,数据获取依赖于python 编写的网络爬虫,爬虫程序基于Requests 来发起对新闻发布平台的请求,获取返回的HTML 页面,之后通过Xpath (XML 路径语言)与python 内置的re (正则表达式)库编写定位HTML 上关键字段的爬取逻辑,将新闻的标题、来源、编辑者、存储路径、发布时间、新闻类别等字段存储进MySQL ,新闻内容与新闻图片存储到本地中。由此即可编写一个针对新闻信息的可扩展爬虫程序。 爬虫程序主要由链接过滤子模块、页面解析子模块、爬行控制子模块以及数据存储子模块构成,其模块结构如图2所示:3.1.1 链接过滤子模块 面向热点新闻的爬虫系统设计与实现 林文涛,陈伟强,刘杭燕,叶?楠 (福州理工学院工学院,福州 350506) 摘要:在现今随着互联网的发展,时刻流通的信息变得更加庞大而繁杂,获取信息,整合提取有实际效益的信息成为了一个难题。要想了解当今世界发生了什么,获取新闻这种记录社会、传播信息、反映时代的文体。显然是最佳的选择。本文提出了一个基于网络爬虫的热点新闻发布系统,并在此系统中设计了相应的爬虫逻辑用于爬取热点新闻,以及编写了资源存储,信息展示等相关功能。进行了有效的信息整合,极大的提高了获取信息的效率。 关键词:爬虫;新闻;python ;Flask doi :10.3969/J.ISSN.1672-7274.2019.01.211中图分类号:TP311.52 文献标示码:A 文章编码:1672-7274(2019)01-0261-03 Design and Implementation of Crawler System for Hot News Lin Wentao,Chen Weiqiang,Liu Hangyan,Ye Nan (The College of Engineering ,Fuzhou Institute of Technology ,Fuzhou ,350506) Abstract :Nowadays ,with the development of the Internet ,the information circulating at all times has become more huge and complex.It has become a difficult problem to acquire information ,integrate and extract information with practical benefits.To understand what is happening in the world today ,get the news ,which records society ,spreads information and re?ects The Times.Clearly the best option.In this paper ,a hot news release system based on network crawler is proposed ,and corresponding crawler logic is designed to crawl hot news ,and related functions such as resource storage and information display are written.Effective information integration has greatly improved the ef?ciency of information acquisition. Keywords :Spider ;News ;Python ;Flask 作者简介:叶 楠,女,1990年生,福建寿宁人,讲师,研究方向电子与通信工程。基金项目:福建省福州理工学院大学生创新创业计划项目(项目编号:201713773017)。

基于P2P的分布式主题爬虫系统的设计与实现

情报学报  ISSN1000-0135 第29卷第3期402-407,2010年6月 JOURNALOFTHECHINASOCIETYFORSCIENTIFICANDTECHNICALINFORMATIONISSN1000-0135Vol.29 No.3,402-407June 2010 收稿日期:2008年12月18日 作者简介:朱学芳,男,1962年生,毕业于北京大学应用数学专业、博士,南京大学博士后,教授,博士生导师。主要研究领域:计算机图像桙信号处理、模式识别、信息检索自动化理论与技术及应用、信息资源管理等。E-mail:xfzhu@nju.edu.cn。韩占校,男,1981年生,毕业于河北大学信息管理与信息系统专业,硕士生,主要研究领域:网络信息检索技术、图像处理应用技术等。doi:10.3772桙j.issn.1000-0135.2010.03.003 基于P2P的分布式主题爬虫系统的设计与实现 朱学芳 韩占校 (南京大学信息管理系、多媒体信息处理研究所,南京210093) 摘要 本文详细叙述了一个用于信息检索的基于P2P的分布式爬虫系统的设计和实现过程。系统基于锚文本 上下文进行主题相关性判定,采用P2P式的分布式结构,充分利用其动态增加新结点的特性来动态地扩展系统的规模,提高系统的整体吞吐能力,以满足现在和将来的用户对日益增长的大数据量检索需求。实验结果表明,可根据用户给定的主题对网页链接上下文进行主题相关性判定以引导爬虫的爬行路径,能够有效地获取相关主题信息。 关键词 网络爬虫 对等网络 分布式计算 信息检索 主题爬虫 DesignandImplementationofDistributedTopicCrawlerBasedonP2PforImageRetrieval ZhuXuefangandHanZhanxiao (InstituteofMultimediaInformationProcessing,Dept.ofInformationManagement,NanjingUniversity,Nanjing210093) Abstract Topicalcrawlersorfocusedcrawlersadaptingtothespecificthemeandpersonalizedsearcharerequiredinorderto meettheneedsoftherapidgrowthofwebinformation,whichsuppliesmoreaccurateandmorecomprehensiveinformationandservicesintheshortesttime.Thedesignandimplementationofadistributedwebcrawlerisproposedinthepaper.Itisbasedon P2P-distributedarchitectureandmakesfulluseofP2P-styledynamiccharacteristicsofaddingnewnodestoincreasethescaleandimprovetheoverallcapacity.Theexperimentsshowedthatthissystemcouldefficientlyprovideuserswithrelevantfilesorwebpagesaccordingtothetopic(s)theydefined. Keywords Webcrawler,peertopeer,distributedcomputing,informationretrieval,topicalcrawler 1 引 言 众所周知,Web应用日益趋于多样化,其中的数 据规模越来越庞大,使得海量数据的检索处理变成了研究者关注的问题。如何在存储和处理海量数据以及传递给用户更直接有效的结果三者之间达到平衡,成为未来Web应用要解决的一个难点问题。目前大多数搜索引擎都是将世界上的各个网站的数据 汇集到一起再进行处理,这种方式要求拥有大量的 计算机和网络资源,一般单位或部门难以负担得起这种运行成本 [1] 。考虑到网络数据的分布式特性, 人们希望利用分布于全球的其他普通PC来获取网络数据,即借助于普通PC用户提供的空闲运算能力,形成比较经济的运行方式。更为重要的是,爬虫系统之间的资源共享,可以大量减少网络的负载,可以获得比较高的更新频率,并且不对网络造成负担 [2,3] 。提高检索效率的另一方面考虑是,有效确定 — 204—

相关主题
文本预览
相关文档 最新文档