[发明专利]自动检测屏蔽的通用分布式爬虫系统有效
申请号: | 201310431787.2 | 申请日: | 2013-09-22 |
公开(公告)号: | CN103491165B | 公开(公告)日: | 2017-04-12 |
发明(设计)人: | 肖仰华;梁家卿;汪卫 | 申请(专利权)人: | 复旦大学 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/44;G06F9/46 |
代理公司: | 上海正旦专利代理有限公司31200 | 代理人: | 陆飞,王洁平 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 自动检测 屏蔽 通用 分布式 爬虫 系统 | ||
技术领域
本发明属于分布式系统和人工智能技术领域,具体涉及一种自动检测屏蔽的通用分布式爬虫系统。
背景技术
爬虫是一种能自动在网络上浏览并下载数据的程序,它被广泛应用在各大互联网公司及数据分析部门,作为其中极其重要的一种数据来源。一般来说,一台机器远远不能满足获取互联网上各种各样的信息的需求。所以大部分爬虫都运行在集群(即多台计算机)上,通过不同的网络出口,并行地从互联网上下载所需的信息。
由于需求的多变,爬虫并不是一个简单的问题。抓取任务往往需要按照某种策略在互联网上进行搜寻和下载,并且对于不同的网页有着不同的下载和分析方法。比如下载视频站中的视频和下载新闻站点的页面就是很不一样的抓取任务。成熟的爬虫系统一般都有着一定的通用性,可以经过一定的配置在集群上运行类型已定义的数据获取任务。
当需要进行一个数据获取任务时,一般需要技术人员对这个任务进行配置,然后输入到系统中,由系统分配这些任务到集群中进行并行的数据下载过程。当然对于许多较小型的爬虫系统,许多可以自动化的工作可能由人工来替代。一般而言,越成熟的爬虫系统可以更加减少添加任务和维护的人工作量。
现如今,一般而言,爬虫系统可以用的机器资源和网络资源是有限制的。特别是许多网站对于爬虫是不友好的。假如使用机器对这些网站的访问过于频繁,那么这些网站就会对这些机器进行屏蔽,从而使这些机器在一段时间中无法访问该网站,使机器资源和网络资源都更为紧张。更严重的后果是因为数据获取是一个长期的过程,不一定有人实时监控,所以可能下载到许多毫无意义的错误信息的页面。虽然在大多数情况下可以通过人工发现错误的页面并标注,从而让系统可以检测是否被屏蔽。但是当要下载的数据来源网站过多的情况下,人工对每个网站采样屏蔽页面是一件代价非常大的工作。
发明内容
为了克服现有技术的不足,本发明的目的在于提供一种健壮成熟的自动检测屏蔽的通用分布式爬虫系统。一方面,其能方便地支持各种各样的数据获取任务,能智能地分配任务到集群中的每个工作节点上,最大化利用系统资源和网络资源,同时应对集群中的故障。另一方面,系统可自动通过对下载到的网页进行分析,估计抓取任务当前是否被服务器屏蔽而获得了错误的结果;进而用系统的调度算法分析错误结果以使该任务被分派到另外的爬虫机器上,最大程度地减少因为服务器方原因而受到的不良影响。
本发明提供的一种自动检测屏蔽的通用分布式爬虫系统,是一个被设计用于运行在100台机器以下的小型集群上的爬虫系统,核心是全自动检测爬虫是否因大量访问而被服务器屏蔽的算法。
本发明提供的一种自动检测屏蔽的通用分布式爬虫系统,采用星型网络架构,包括一个核心节点(以下称为Master)和多个其他的节点Slave(以下称为Slave,从机),由核心节点Master控制集群中Slave。其中:Master负责管理整个集群,包括集群故障状态和被封锁状态的监控、任务管理和调度分发。Slave负责具体的抓取工作,即访问网络和下载页面的过程。Slave只作为执行者,只和Master进行通信,并且不保存有关任务的信息。所以Slave的添加、删除、故障都不会影响系统的正常运行。Master通过快照机制来处理单点故障(即Master故障导致集群瘫痪的情况)。
Master中包括任务指派模块、任务调度模块和错误处理与故障恢复模块。每个抓取任务被称为一个Job,每个Job有一个与其相关联的爬虫程序,如对某个Ajax动态网页的抓取任务就需要一个特制的Ajax爬虫。Master上保存有多个爬虫,并且可以方便地往里面添加新的爬虫类型,以此来支持各种各样的抓取Job的类型。任务调度模块中的任务池保存当前系统中所有正在执行的Job及其状态。被分发到Slave的任务是用这个池中获取的。
所述任务指派模块位于Master上,负责和Slave进行通信,将具体的任务传输给Slave,并接收Slave关于任务的返回信息,传递给任务调度模块。
Master通过心跳机制检测每一台Slave的状态,当它发现有Slave处于空闲状态,它会从任务池中取出一个Job,将其分割成若干平行小任务,并把这些小任务按照分配策略分配给空闲的工作机以确保最大程度利用计算资源。这里每个任务称为该Job的一个Task。每台Slave在完成其任务后会向Master报告任务的完成状况,Master记录每个Task的状况,可能是待分配、正在执行中、已完成、或者是已出错,对于已出错的任务,Master会将其分配给另一台Slave执行。最终保证整个Job能成功的执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310431787.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种破碎清洗输送管道
- 下一篇:一种具有拉伸腔体载带专用的聚碳酸酯薄膜