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

上传人:8****9 文档编号:125340462 上传时间:2020-03-17 格式:DOC 页数:6 大小:199KB
返回 下载 相关 举报
分布式网络爬虫关键技术分析与实现_第1页
第1页 / 共6页
分布式网络爬虫关键技术分析与实现_第2页
第2页 / 共6页
分布式网络爬虫关键技术分析与实现_第3页
第3页 / 共6页
分布式网络爬虫关键技术分析与实现_第4页
第4页 / 共6页
分布式网络爬虫关键技术分析与实现_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《分布式网络爬虫关键技术分析与实现》由会员分享,可在线阅读,更多相关《分布式网络爬虫关键技术分析与实现(6页珍藏版)》请在金锄头文库上搜索。

1、分布式网络爬虫关键技术分析与实现分布式网络爬虫体系结构设计 一、研究所属范围分布式网络爬虫包含多个爬虫,每个爬虫需要完成的任务和单个的爬行器类似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。这些爬虫可能分布在同一个局域网之中,或者分散在不同的地理位置。根据爬虫的分散程度不同,可以把分布式爬行器分成以下两大类:1、基于局域网分布式网络爬虫:这种分布式爬行器的所有爬虫在同一个局域网里运行,通过高速的网络连接相互通信。这些爬虫通过同一个网络去访问外部互联网,下载网页,所有的

2、网络负载都集中在他们所在的那个局域网的出口上。由于局域网的带宽较高,爬虫之间的通信的效率能够得到保证;但是网络出口的总带宽上限是固定的,爬虫的数量会受到局域网出口带宽的限制。2、基于广域网分布式网络爬虫:当并行爬行器的爬虫分别运行在不同地理位置(或网络位置),我们称这种并行爬行器为分布式爬行器。例如,分布式爬行器的爬虫可能位于中国,日本,和美国,分别负责下载这三地的网页;或者位于CHINANET,CERNET,CEINET,分别负责下载这三个网络的中的网页。分布式爬行器的优势在于可以子在一定程度上分散网络流量,减小网络出口的负载。如果爬虫分布在不同的地理位置(或网络位置),需要间隔多长时间进行

3、一次相互通信就成为了一个值得考虑的问题。爬虫之间的通讯带宽可能是有限的,通常需要通过互联网进行通信。在实际应用中,基于局域网分布式网络爬虫应用的更广一些,而基于广域网的爬虫由于实现复杂,设计和实现成本过高,一般只有实力雄厚和采集任务较重的大公司才会使用这种爬虫。本论文所设计的爬虫就是基于局域网分布式网络爬虫。二、分布式网络爬虫整体分析 分布式网络爬虫的整体设计重点应该在于爬虫如何进行通信。目前分布式网络爬虫按通信方式不同分布式网路爬虫可以分为主从模式、自治模式与混合模式三种。主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提

4、交给控制节点就可以了,在这个过程中不必与其他爬虫通信,这种方式实现简单利于管理。而控制节点则需要与所有爬虫进行通信,它需要一个地址列表来保存系统中所有爬虫的信息。当系统中的爬虫数量发生变化时,协调者需要更新地址列表里的数据,这一过程对于系统中的爬虫是透明的。但是随着爬虫网页数量的增加。控制节点会成为整个系统的瓶颈而导致整个分布式网络爬虫系统性能下降。主从模式的整体结构图:自治模式是指系统中没有协调者,所有的爬虫都必须相互通信,比主从模式下爬虫要复杂一些。自治模式的通信方式可以使用全连接通信或环形通信。全连接通信是指所用爬虫都可以相互发送信息,使用这种方式的每个网络爬虫会维护一个地址列表,表中存

5、储着整个系统中所有爬虫的位置,每次通信时可以直接把数据发送给需要此数据的爬虫。当系统中的爬虫数量发生变化时,每个爬虫的地址列表都需要进行更新。环形通信是指爬虫在逻辑上构成一个环形网,数据在环上按顺时针或逆时针单向传输,每个爬虫的地址列表中只保存其前驱和后继的信息。爬虫接收到数据之后判断数据是否是发送给自己的,如果数据不是发送给自己的,就把数据转发给后继;如果数据是发送给自己的,就不再发送。假设整个系统中有n个爬虫,当系统中的爬虫数量发生变化时,系统中只有n-1个爬虫的地址列表需要进行更新。混合模式是结合上面两种模式的特点的一种折中模式。该模式所有的爬虫都可以相互通信同时都具有任务分配功能。不过

6、所有爬虫中有个特殊的爬虫,该爬虫主要功能对已经经过爬虫任务分配后无法分配的任务进行集中分配。使用这个方式的每个网络爬虫只需维护自己采集范围的地址列表。而特殊爬虫需除了保存自己采集范围的地址列表外还保存需要进行集中分配的地址列表。混合模式的整体结构图:三、大型分布式网络爬虫体系结构图:从这些图可以看出,分布式网络爬虫是一项十分复杂系统。需要考虑很多方面因素。性能可以说是它这重要的指标。当然硬件层面的资源也是必须的。不过不在本系列考虑范围。从下篇开始,我将从单机网络爬虫一步步介绍我们需要考虑的问题的解决方案。如果大家有更好的解决方案。欢迎指教。吉日的一句话说的很有道理,一个人一辈子只能做好几件事。

7、希望大家支持我的这个系列。谈谈网络爬虫设计中的问题 网络蜘蛛现在开源的已经有好几个了,Larbin,Nutch,Heritrix都各有用户之地,要做一个自己的爬虫要解决好多个问题,比如调度算法、更新策略、分布式存储等,我们来一一看一下。一个爬虫要做的事主要有以下这些1. 从一个网页入口,分析链接,一层一层的遍历,或者从一组网页入口,或者从一个rss源列表开始爬rss; 2. 获取每个页面的源码保存在磁盘或者数据库里; 3. 遍历抓下来的网页进行处理,比如提取正文,消重等; 4. 根据用途把处理后的文本进行索引、分类、聚类等操作。 以上是个人理解哦,呵呵。这些过程中,大约有如下问题如何获取网页源

8、或者RSS源如果是一般的爬虫的话,就是给几个入口页面,然后顺着超链接以遍历图的算法一个页面一个页面的爬,这种情况网页源很少,可以选择从hao123等网址大全的网站为入口开始爬。如果做垂直搜索的话就人工去收集一些这个行业的网站,形成一个列表,从这个列表开始爬。如果是爬RSS的话,需要先收集RSS源,现在大的门户的新闻频道和主流的博客系统都有rss的功能,可以先爬一遍网站,找出rss的链接,要获取每个链接的内容,分析是否是rss格式,如果是就把这个链接保存到rss源数据库里,以后就专门爬这个rss源的rss。还有一种就是人工来整理,一般blog的rss都是有规律的,主域名跟一个用户名后面再跟上一个

9、rss的固定页面,比如http:/ copy放数据库就行了。一般频繁的写磁盘可能会引起CPU过高,而频繁的写数据库CPU还好一些。而且sqlserver2008支持filestream类型的字段,在保存大文本字段的时候有很好的性能,并且还能使用数据库的API来访问。所以我觉得如果没有GFS那样高效成熟的分布式文件系统的话还不如存sqlserver里面呢。如何有效的根据网页的更新频率来调整爬虫的采集时间间隔做爬虫要了解一些HTTP协议,如果要抓的网页支持Last-Modified或者ETag头,我们可以先发个head请求来试探这个页面有没有变化来决定是否要重新抓取,但是好多网站根本就不支持这个东西,所以让爬虫也很费劲,让自己的网站也会损失更多的性能。这样我们就要自己去标注每个源页面的更新时间间隔及权重,再根据这两个值去用一定的算法制定蜘蛛的更新策略。采集下来的数据做什么用可以抓取一个行业的网站,在本地进行分词和索引,做成垂直搜索引擎。可以用一定的训练算法对抓取下来的页面进行自动分类,做成新闻门户。也可以用死小风行的文本相似度算法处理后进行文本聚类处理。如何不影响对方网站的性能现在好多网站都被爬虫爬怕了,因为有些蜘蛛弄住一个网站可劲儿的爬,爬的人家网站的正常用户都无法访问了。所以好多站长想了好多办法来对付爬虫,所以我们写爬虫也要遵循机器人协议,控制单位时间内对一个网站的访问量。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号