一种基于可视化脚本编辑器的分布式网络爬虫系统的制作方法

文档序号:9489521阅读:517来源:国知局
一种基于可视化脚本编辑器的分布式网络爬虫系统的制作方法
【技术领域】
[0001]本发明涉及网络通讯技术领域,尤其涉及一种基于可视化脚本编辑器的分布式网络爬虫系统。
【背景技术】
[0002]自互联网诞生至20世纪末,互联网信息得到了爆炸性地增长,已然成为一个巨大的,分布广泛的,高度异构的,半结构化的,且动态性高的信息图书馆。为了从互联网信息中收集提取人们感兴趣的数据,网络爬虫就此诞生。自此,爬虫技术便一发不可收拾,以其为基石催生了百度、谷歌等国内外的搜索引擎巨头,给世人打开了一扇信息的窗口。
[0003]当今,互联网信息的主要由网站和WEB服务形式提供的。网站由各式各样的网页组成,提供的数据基本上以非结构化的静态的超文本链接标示语言(HTML,HypertextMarkup Language)的呈现。由于信息分析系统无法直接使用HTML,往往需要对其进行二次处理才能提取出有用的信息。WEB服务则是相对规范的数据接口,通过特定参数访问即可获取数据,WEB服务可以独立存在,也可与网站结合。如何高效准确的从大量特定的网站或WEB服务中获取特定的信息越来越被人们所关注。这使得负责网络信息采集的网络爬虫技术面临了巨大的挑战。
[0004]网络爬虫虽然经历多代发展,已经基本形成的多种系统模型。国内外对爬虫的设计已经有了很成熟的解决方案,并已投入使用,但是那些解决方案大多只给大众用户提供一种通用的服务,不可针对特定站点特定数据进行制定的,无法考虑到各个用户的各式各样的需求。
[0005]在互联网领域,目前有如下几种主流的爬虫设计:
[0006]1.传统爬虫系统
[0007]传统爬虫系统,需要专业的软件编程人员通过分析目标站点的网页组织形式,数据接口以及页面上Javascript逻辑代码,编写出相应的程序代码或脚本,来实现根据某种规则过滤出特定的数据。很明显,这种方法的优点是能够准确的从目标站点中提取所需的数据。
[0008]但是这种方法有很大的缺陷,一般只在目标站点数量十分有限的情况下才会采用。原因是,互联网网站使用的HMTL语言并没有固定的编写规范,需要对所有目标站点编写对应的脚本,再加上有当今越来越多的网站采用动态加载方式,编写难度大大提高。当监控网站的改版时,需要及时调整脚本,并重新部署爬虫。这极大的提高了开发与维护中的人力成本。除此之外,这种模式由于其复杂性,导致扩展性与伸缩性不佳,不利于大规模分布式部署。
[0009]2.通用分布式爬虫系统
[0010]通用分布式爬虫系统,主要结构为调度(控制),抓取和内容处理三大基础部分组成。当前大部分互联网搜索引擎都是这种方式。如:现有技术中公开了一种“主题相关的分布式网络爬虫系统,”,见公开号为:CN102646129A,公开日为:2012-08-22的中国专利,该系统包括:主题链接存储器,用于存放系统未完成抓取的超链接;控制节点,用于从主题链接存储器中提取超链接,去除其中已经被系统抓取过的超链接,然后将未被系统抓取过的超链接分配给爬行节点,并控制是否终止系统运行;爬行节点,用于接收控制节点分配的超链接,然后下载超链接标识的网页,并且将网页存储在网页数据库中;网页数据库,用于存放爬行节点抓取的网页;网页分析器,用于定期从网页数据库中读取爬行节点下载的最新网页,对网页进行内容分析,计算网页及网页内所含超链接的主题相关度,然后根据主题相关度将相关的超链接存放到主题链接存储器中,将每个网页的主题相关度存于网页数据库中。该发明就是采用此种模式。这种类型的爬虫系统主要将重点放在了 URL过滤与网页主题的分析上,内容处理部分基本都是使用正文分析提取模块。
[0011]正文分析模块大致可以分为:1.基于标签用途的正文提取算法2.基于标签密度判定3.基于机器学习的网页正文抽取方法4.基于视觉网页块分析技术的正文抽取。但是不管采用何种算法,其只能用于网页正文等主干数据的提取并且无法保证提取数据的准确度。这些发明方法可以较好的用于分布式爬虫系统,但局限于依赖的算法,只适用于横向大范围的模糊数据爬取,对于特定数据的爬取具有先天缺陷。因为其为了获得最大的通用性,牺牲了定制化能力,只能从网页中提取正文信息,却无法从正文中分离出特定类型的元数据。举例如电商网站页面中的商品价格,网络药店页面中的药品规格。其次,大部分正文分析算法相对复杂,大量使用时对比定制化的脚本会消耗更多的系统资源,导致爬虫系统性能下降。

【发明内容】

[0012]本发明要解决的技术问题,在于提供一种基于可视化脚本编辑器的分布式网络爬虫系统,能够实现对大量特定站点进行高效定制化爬取同时兼容通用站点的爬取,解决了现有技术存在的缺陷;减少用户劳动强度,节省系统资源。
[0013]本发明是这样实现的:一种基于可视化脚本编辑器的分布式网络爬虫系统,所述系统包括:可视化脚本编辑器、分布式消息队列、任务调度模块、网页抓取模块、内容处理模块、以及结果存储模块;
[0014]所述可视化脚本编辑器,用于查看目标网站,并选择目标网站数据抓取区域;将用户的输入转化成一条执行链,同时根据执行链生成对应的脚本并存入一数据库;该脚本即为目标网站对应的脚本;
[0015]所述分布式消息队列,用于将任务调度模块,网页抓取模块,内容处理模块和结果存储模块进行解耦,该分布式消息队列包括调度队列、抓取队列、处理队列、以及结果队列;
[0016]所述任务调度模块,用于负责协调整个系统的运作,读入目标网站起始URL链接与用户输入信息打包成任务后传入所述调度队列,并从调度队列里取得任务对象,并过滤重复任务后发送至所述抓取队列;
[0017]所述网页抓取模块,用于从抓取队列获取到URL链接,自动解析网站编码,并将抓取的网站的内容转换成UTF-8编码,将该UTF-8编码的内容与网站相关信息打包后转发送到处理队列;
[0018]所述内容处理模块,用于从所述处理队列获取到网站的网页内容,使用可视化脚本编辑器生成的URL匹配规则匹配此网页的URL链接,若找到匹配则调用此URL匹配规则对应的脚本对此网页内容进行解析;将解析后的结果传入结果队列中;
[0019]所述结果存储模块,用于从结果队列中取出结果数据,并将结果数据根据系统预定义的配置进行统一处理筛选,然后存入数据库。
[0020]进一步地,所述系统还包括监控模块,所述监控模块实时监控分布式消息队列中的调度队列,抓取队列,处理队列,结果队列四个队列是否出错,当发现异常时,及时推送消息至系统的用户界面,提醒用户检查出错原因以及是否重新进行脚本输入。
[0021]进一步地,所述系统还包括正文提取模块,当网页的域名匹配不到与所述数据库中的脚本时,调用所述正文提取模块,来进行提取网页相应的脚本,所述正文提取模块使用基于视觉网页块分析技术的正文抽取方式进行提取。
[0022]进一步地,所述调用此脚本进行解析;如果解析处理后生成的是新的URL链接,则将新的URL链接传入所述调度队列,重新执行任务调度模块;如果解析处理后是结果数据,则将解析后的结果数据传入结果队列中。
[0023]进一步地,所述任务调度模块包括URL过滤模块和速率管理器,所述URL过滤模块,使用布隆过滤器对URL链接进行去重,防止重复爬取同一 URL链接,布隆过滤器是由一个二进制向量和一系列随机映射函数组成,用于检索一个元素是否在一个集合中;所述速率管理器,采用令牌桶算法防止网络拥塞,限制流出网络的流量,使流量以均匀的速度向外发送,保证系统的稳定性。
[0024]进一步地,所述网页抓取模块包括:代理访问模块和浏览器模拟模块,所述代理访问模块,根据用户配置信息对指定的URL链接使用预设的IP代理进行访问,防止所述网页抓取模块所在服务器IP因为访问量过大被目标网站封锁,所述浏览器模拟模块,使用WebKit开源浏览器引擎来解析目标网站,能够执行页面上的Javascript代码,生成目标网站的完整页面。
[0025]进一步地,所述执行链包含若干个子参数,子参数有多种选择,子参数的选择包括:下层URL链接选
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1