一种分布式的聚焦网络爬虫网页爬取方法及系统技术方案

技术编号:17346424 阅读:39 留言:0更新日期:2018-02-25 11:42
本发明专利技术公开了一种分布式的聚焦网络爬虫网页爬取方法及系统;本方法为:1)根据种子任务获取数据抓取的入口链接,生成待下载任务;2)根据该待下载任务获取对应的网页数据;3)从网页数据中提取出设定的目标结构化数据;其中,解析调度模块将待解析任务从待解析任务队列取出,通过负载均衡发送给解析模块;解析模块根据解析任务中的信息获取匹配的解析模板,从获取的所述网页数据中解析出目标结构化数据;为每一设定网站设置一对应的解析模板,解析模板为若干正则表达式组成的XML格式的文件,每一正则表达式均能从网页数据中匹配出目标结构化数据的一个属性。本发明专利技术大大提升数据抓取效率,具有高度的内聚性和透明性。

【技术实现步骤摘要】
一种分布式的聚焦网络爬虫网页爬取方法及系统
本专利技术属于网络爬虫领域,具体涉及一种分布式的聚焦网络爬虫网页爬取方法及系统,能够对不同网站发送不同方式的请求,解析不同结构的数据。
技术介绍
网络爬虫能够有效使用现有的各种资源自动抓取互联网中大量网页信息的程序,有时也被叫成“网络蜘蛛(Spider)”。聚焦网络爬虫也可被称为主题网络爬虫,是有目的地爬取数据,根据特定的主题来爬取相关的页面。与通用网络爬虫相比,这类爬虫并不是漫无目的地爬取整个网络的数据,而是选择性的爬取,这样既能减少爬取网页的数量,同时也提升了网页更新的效率,从而使得这类爬虫对爬取速度和存储空间的要求不是很高,但是需要有良好的爬行策略来评价页面或链接是否需要被爬取。由于聚焦网络爬虫爬取过程中需要获取请求URL、发送WEB请求下载页面、从网页中解析结构化数据、重复数据过滤、种子任务处理5个环节,每个环节消耗资源各不相同,且每个环节出现问题都会影响整个爬虫系统效率及稳定性。另外,随着互联网技术的日新月异,网站越来越多,信息越来越多,而且大部分网站数据均为异步请求;或是部分网站在服务端对数据进行加密处理,前端执行JS脚本对数据解密处理,因此缺少一种兼容各种网站、各类数据的爬虫系统。
技术实现思路
本专利技术提出一种分布式的聚焦网络爬虫网页爬取方法及聚焦网络爬虫系统,能够支持多种类型的网页请求方式,结构化数据解析配置灵活。爬取过程模块化、职能化,大大提升数据抓取效率,具有高度的内聚性和透明性。本专利技术将分布式技术利用到聚焦网络爬虫系统中,将5个处理环节模块化并且每个模块职能单一,从而提高了整个系统的工作效率,使得系统水平扩展更方便简单。另一方面,本专利技术中引入KAFKA消息队列用于模块之间的解耦,KAFKA也具备高吞吐、高可用、易扩展的特点,因此引入KAFKA这种存储介质也大大提高了本专利技术的效率和稳定性。本专利技术引入Selenium自动化测试工具调用浏览器或伪浏览器来加载数据;而对于加密数据则通过调用JS引擎执行JS脚本对数据解密从而爬取数据。本专利技术采用的技术方案如下:一种分布式的聚焦网络爬虫网页爬取方法,包括以下步骤:1)任务生成模块,根据种子任务获取数据抓取的入口链接,生成待下载任务;2)网页下载模块,根据待下载任务,判断是要以传统的HTTP请求、Selenium调用浏览器或伪浏览器还是需要使用JS引擎执行JS脚本的方式请求网页内容;3)网页解析模块,从杂乱无章的下载的网页源码内容中利用正则表达式提取出设定的目标结构化数据。如,获取某网站的在线点评数据,网页解析的目的则是从点评页面源码中获取点评数据的集合,其中点评数据的集合即为最终想要的目标结构化数据;4)数据排重模块,在本次下载的数据中过滤掉与之前下载重复的数据,并根据数据的重复情况,判断是否继续爬取种子任务;5)种子任务迭代模块,从种子任务队列取出待下载的种子任务生成待下载任务,并重复上述1)-5)步。进一步地,步骤1)从数据库中获取所需爬取数据的入口链接,并根据相应的链接拼接规则,拼接网页请求Url,生成待下载任务,存入待下载任务队列中。进一步地,步骤2)所述网页下载包括:下载器调度模块和下载器模块。进一步地,所述下载器调度模块,用于将待下载任务从待下载任务队列取出,分发给下载器模块,以及接收下载完成任务存入待解析队列;所述下载器模块,接收到待下载任务,发送Web请求下载网页数据,存储到MongoDB数据库中,并将下载完成任务发送给下载器调度模块。进一步地,步骤3)所述网页解析包括:解析调度模块和解析模块。进一步地,所述解析调度模块,用于将待解析任务从待解析任务队列取出,通过nginx负载均衡发送给解析模块,以及接收解析完成任务存入待排重任务队列;所述解析模块,接收到待解析任务,根据任务中信息,在Redis中获取解析模板,在MongoDB中获取下载网页,解析出目标结构化数据,发送给解析调度模块。进一步地,所述解析模板用于从下载网页内容中提取出目标结构化数据,由正则表达式集合组成的XML格式的文件,其中每个正则表达式均可从下载的网页内容中匹配出目标结构化数据的一个属性。由于各个网站的网页结构各不相同,且从每个网站上抓取的数据也不尽相同,每个网站均有与之相对应的解析模板。因此数据爬取的过程需要根据网页结构和目标结构化数据的数据结构确定出解析模板的内容,然后再利用解析模板对该网页进行解析。进一步地,步骤4)所述数据排重包括:排重调度模块和排重模块。进一步地,所述排重调度模块,用于将待排重任务从待排重任务队列取出,通过nginx负载均衡发送给排重模块,并接收排重完成任务。最终将排重完成任务存入排重完成队列,新下载数据添加到对应数据存储队列,种子任务添加到种子任务队列;所述排重模块,接收到待排重任务,根据任务中信息,在Redis中获取排重模板,过滤重复数据,并判断是否继续下载种子任务,发送给排重调度模块。进一步地,所述排重模板用于表示不同网站数据过滤重复数据和种子任务是否继续下载的规则。进一步地,步骤4)所述种子任务迭代,将种子任务队列中种子任务生成待下载任务,存入待下载任务队列。本专利技术的有益效果如下:本专利技术提出的一种分布式的聚焦爬虫系统,能够支持多种类型的网页请求方式,结构化数据解析配置灵活。爬取过程模块化、职能化,大大提升数据抓取效率,具有高度的内聚性和透明性。附图说明图1是本专利技术实施例的爬虫系统的架构图。图2是本专利技术实施例的爬虫系统任务生成模块的流程图。图3是本专利技术实施例的爬虫系统网页下载模块的架构图。图4是本专利技术实施例的爬虫系统网页解析模块的架构图。图5是本专利技术实施例的爬虫系统数据排重模块的架构图。图6是本专利技术实施例的爬虫系统种子任务迭代模块的流程图。具体实施方式下面通过具体实施例和附图,对本专利技术做进一步说明。图1是本专利技术实施例的爬虫系统的架构图。如图1所示,爬虫系统总共分为任务生成模块、网页下载模块、网页解析模块、数据排重模块、种子任务迭代模块5个功能模块协作完成网页爬取工作,模块之间采用KAFKA消息队列实现模块解耦的目的。KAFKA消息队列只是一种存储任务的存储介质,对本领域的技术人员来说,其它存储介质也能达到相同的目的和效果。例如,MQ存储消息队列、REDIS数据库,但是KAFKA在吞吐量、扩展性、可用性等方面具有明显优势。另一方面,本专利技术中的爬虫系统兼容各个网站,对不同的网站具有不同的任务生成规则、网页下载规则、网页解析规则、数据排重规则,本专利技术中爬虫系统将所有规则存储在ZooKeeper中。ZooKeeper是一个分布式的应用程序协调服务,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。本专利技术中爬虫系统将各类规则存储在ZooKeeper,一旦网站改版,规则发生变更,ZooKeeper能立即推送新规则到爬虫系统中,保证了数据抓取的稳定性。图2是本专利技术实施例的爬虫系统任务生成模块的流程图。如图2所示,网站数据需要爬取时,任务生成模块便将网站起始URL根据任务生成规则创建成待下载任务,存入待下载任务队列中。数据爬取过程中,会发现有些目标数据是异步请求的,爬取此类数据时,本专利技术中爬虫系统需要使用异步请求的AJAXURL下载网页,因此引入任务生成规则,用于将待爬取的网站起始URL本文档来自技高网...
一种分布式的聚焦网络爬虫网页爬取方法及系统

【技术保护点】
一种分布式的聚焦网络爬虫网页爬取方法,其步骤包括:1)任务生成模块根据种子任务获取数据抓取的入口链接,生成待下载任务;2)网页下载模块根据该待下载任务获取对应的网页数据;3)网页解析模块从所述网页数据中提取出设定的目标结构化数据;其中,所述网页解析模块包括一解析调度模块和若干解析模块;所述解析调度模块,用于将待解析任务从待解析任务队列取出,通过负载均衡发送给解析模块;所述解析模块,用于根据解析任务中的信息获取匹配的解析模板,从获取的所述网页数据中解析出目标结构化数据;为每一设定网站设置一对应的解析模板,所述解析模板为若干正则表达式组成的XML格式的文件,每一正则表达式均能从所述网页数据中匹配出目标结构化数据的一个属性。

【技术特征摘要】
1.一种分布式的聚焦网络爬虫网页爬取方法,其步骤包括:1)任务生成模块根据种子任务获取数据抓取的入口链接,生成待下载任务;2)网页下载模块根据该待下载任务获取对应的网页数据;3)网页解析模块从所述网页数据中提取出设定的目标结构化数据;其中,所述网页解析模块包括一解析调度模块和若干解析模块;所述解析调度模块,用于将待解析任务从待解析任务队列取出,通过负载均衡发送给解析模块;所述解析模块,用于根据解析任务中的信息获取匹配的解析模板,从获取的所述网页数据中解析出目标结构化数据;为每一设定网站设置一对应的解析模板,所述解析模板为若干正则表达式组成的XML格式的文件,每一正则表达式均能从所述网页数据中匹配出目标结构化数据的一个属性。2.如权利要求1所述的方法,其特征在于,所述网页下载模块包括一下载器调度模块和若干下载器模块;所述下载器调度模块根据当前可用的下载器模块数量从待下载任务队列中获取待下载任务并分发给可用的下载器模块,以及接收下载器模块下载完成的任务并将其添加到待解析任务队列;所述下载器调度模块为每一下载器模块设置一最大并发上限,当该下载器模块请求同一个网站的并发数达到该下载器模块的最大并发上限时,所述下载器调度模块将其余访问该网站的任务分发给另一个并发数未达到上限的下载器模块。3.如权利要求2所述的方法,其特征在于,所述下载器模块将自身信息注册到一分布式的应用程序协调服务Zookeeper中,所述下载器调度模块从应用程序协调服务Zookeeper中获取当前可用的下载器模块;所述应用程序协调服务Zookeeper中用于配置维护、域名服务、分布式同步、组服务。4.如权利要求2或3所述的方法,其特征在于,所述下载器调度模块与所述下载器模块之间采用Socket通信机制进行通信;所述下载器调度模块利用应用程序协调服务Zookeeper中的心跳检测机制检测下载器模块的运行状态,当一下载器模块停止运行时,所述下载器调度模块不再给该下载器模块分发待下载任务。5.如权利要求1所述的方法,其特征在于,所述解析调度模块与所述解析模块之间通过Nginx负载均衡实现任务调用。6.如权利要求1所述的方法,其特征在于,通过一排重模块监测当前获取的所述目标结构...

【专利技术属性】
技术研发人员:倪学峰于海群暴筱张猛林小俊
申请(专利权)人:北京众荟信息技术股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1