CN110347899A - 基于事件驱动模型的分布式互联网数据采集系统与方法 - Google Patents

基于事件驱动模型的分布式互联网数据采集系统与方法 Download PDF

Info

Publication number
CN110347899A
CN110347899A CN201910599035.4A CN201910599035A CN110347899A CN 110347899 A CN110347899 A CN 110347899A CN 201910599035 A CN201910599035 A CN 201910599035A CN 110347899 A CN110347899 A CN 110347899A
Authority
CN
China
Prior art keywords
data
service
event
module
console
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910599035.4A
Other languages
English (en)
Other versions
CN110347899B (zh
Inventor
孔逸飞
段毅飞
王亮亮
薛彦文
刘博�
李渔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Entropy Technology Co Ltd
Original Assignee
Beijing Entropy Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Entropy Technology Co Ltd filed Critical Beijing Entropy Technology Co Ltd
Priority to CN201910599035.4A priority Critical patent/CN110347899B/zh
Publication of CN110347899A publication Critical patent/CN110347899A/zh
Application granted granted Critical
Publication of CN110347899B publication Critical patent/CN110347899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于事件驱动模型的分布式互联网数据采集系统及方法,涉及网络搜索技术领域,系统包括控制台模块、数据采集引擎模块、数据存储模块、日志服务模块,并运行在容器编排引擎之上;控制台模块对数据采集和数据存储进行配置;数据采集引擎模块根据控制台模块的配置完成数据采集;数据存储模块与数据采集引擎模块连接,根据控制台模块的配置完成数据存储;控制台模块、数据采集引擎模块、数据存储模块和日志服务模块都各包含一项或多项服务;服务互相解耦,以独立Docker镜像的形式部署于容器编排引擎之上。本发明具备快速地动态扩容和缩容的能力,支持日采集TB量级别海量数据的需求,并支持同时对上千种不同来源的网站进行数据采集。

Description

基于事件驱动模型的分布式互联网数据采集系统与方法
技术领域
本发明涉及网络搜索技术领域,尤其涉及一种基于事件驱动模型的分布式互联网数据采集系统与方法。
背景技术
现代信息技术的高速发展使得互联网上所容纳的数据和信息呈现爆炸式增长。近年来,大数据的提出和应用使得人们进一步认识到互联网数据的重要价值。互联网数据越来越被视作数字石油,可以给政府、金融机构、银行、传统企业等机构提供底层的信息驱动力。因此,对于分散在互联网各处的信息,需要专业的互联网数据采集技术(又被称为网络爬虫)对这些海量数据进行及时、大规模的采集。
互联网上的数据类型丰富,呈现形式也千差万别。传统的爬虫技术一般是针对每一个的网站编写特定的采集脚本,这导致采集成本很高,很难实现真正意义的大规模数据采集。而对于用于搜索引擎的爬虫系统,虽然具有很好的通用性,但是这类系统为了采集的通用性,往往采集精度很低、解析能力较弱,对很多网站常常是蜻蜓点水,丢失了大量有价值的信息。这一特性已经无法满足金融、银行等机构对于高精细化数据的需求。
火车采集器(如图1所示)是基于Windows平台的客户端软件,用户可通过软件界面配置目标网站的采集规则和采集计划,并支持将数据保存和发布到Mysql/Oracle等数据库中。但该技术方案存在以下缺陷:
1、火车采集器为客户端软件,因此不适合进行分布式部署;
2、火车采集器的性能受到客户端所在的物理机器的性能限制;
3、综合上述1、2两点,火车采集器系统不能满足实时大规模数据采集的需求。
神箭手数据采集系统(如图2所示)是一个分布式的爬虫系统,用户编写代码进行数据采集的相关配置,包括目标网站入口、抽取规则、数据存储、数据发布等。但该技术方案存在以下缺陷:
1、虽然为分布式爬虫系统,但在系统需要扩容时,需要单独在新增的节点机器上专门布置神箭手采集系统,并进行配置,因此,系统扩容成本较高,也较繁琐;
2、没有快速缩容机制;
3、各个机器节点相对独立,运维压力较高;
4、不支持可视化用户界面,对于使用人员的技术要求较高。
Django Dynamic Scraper(如图3所示)是基于Scrapy和Django的开源数据爬虫技术方案,可通过Django后台对爬虫项目进行规则配置。
但该技术方案存在以下缺陷:
1、只适宜编写小规模的爬虫项目,在面对大规模抓取任务时,需要从系统底层调整代码逻辑;
2、主要提供代码的执行管理,缺乏分布式调度的支持;
3、不支持可视化用户界面,对于使用人员的技术要求较高。
综上,本领域的技术人员致力于开发一种兼容多种网站数据类型的大规模数据采集系统与方法来解决上述问题。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是:
1、如何让系统在分布式工作的同时,还具备快速地动态扩容和缩容的能力,以面对TB级海量数据的采集需求;
2、在解决问题1的基础上,如何同时兼容多种网站类型(如新闻、电商、招聘、社交、视频等)的数据采集需求;
3、如何在解决前两个问题的基础上尽可能降低系统对于使用人员的技术要求。
为实现上述目的,本发明提供了一种基于事件驱动模型的分布式互联网数据采集系统,包括控制台模块、数据采集引擎模块、数据存储模块、日志服务模块;
所述系统运行在容器编排引擎之上;
所述控制台模块对数据采集和数据存储进行配置;
所述数据采集引擎模块根据所述控制台模块的配置完成所述数据采集;
所述数据存储模块与所述数据采集引擎模块连接,根据所述控制台模块的配置完成所述数据存储;
所述控制台模块、所述数据采集引擎模块、所述数据存储模块和所述日志服务模块都各包含一项或多项服务;
所述服务互相解耦,以独立Docker镜像的形式部署于所述容器编排引擎之上。
进一步地,所述服务之间通过事件的形式进行传递。
进一步地,所述容器编排引擎可以为kubernetes、docker swarm、Marathon、Apache Mesos或Nomad中的一种。
进一步地,所述数据采集引擎模块包括调度组件、下载解析组件和数据校验组件;所述调度组件与所述下载解析组件配合完成所述数据采集;所述下载解析组件与所述数据校验组件配合对所述数据采集进行校验。
进一步地,所述调度组件包括爬虫调度服务和链接调度服务。
进一步地,在所述爬虫调度服务和所述链接调度服务之间设有调度事件消息队列;所述链接调度服务还连接抓取事件消息队列。
进一步地,在所述调度事件消息队列与所述链接调度服务之间还设有抓取任务缓冲队列。
进一步地,所述下载解析组件包括下载服务、解析服务。
进一步地,所述下载解析组件封装PycURL、splash、Chrome Headless,并提供统一接口。
进一步地,所述下载服务连接所述抓取事件消息队列,根据从所述抓取事件消息队列中获取的数据下载事件下载原始网页。
进一步地,所述解析服务连接所述下载服务,对所述原始网页进行解析获取目标数据。
进一步地,所述下载解析组件还包括代理服务、下载辅助服务。
进一步地,所述数据校验组件包括数据校验服务;所述数据校验服务连接所述解析服务,对所述目标数据进行校验。
进一步地,所述控制台模块包括控制台和爬虫状态服务及配置服务。
进一步地,所述控制台分为控制台前端页面和控制台后端。
进一步地,所述控制台前端页面提供可视化的控制台面板,可以对所述数据采集的整个生命周期进行配置和管理,包括数据采集周期、数据采集网页范围、网页下载配置、网页抽取配置、项目管理。
进一步地,所述控制台后端可以采用Flask、Django、Pylons、Tornado或Bottle中的一种或多种框架。
进一步地,所述爬虫状态服务及配置服务与所述爬虫调度服务连接。
进一步地,所述数据存储模块包括数据存储服务;所述数据存储服务与所述解析服务连接。
进一步地,所述数据存储服务连接数据库;所述数据库支持MySQL、MongoDB和对象存储服务。
进一步地,在所述数据存储服务与所述解析服务之间还设置有抓取完成事件队列。
进一步地,所述调度事件消息队列、所述抓取事件消息队列、所述抓取完成事件队列可以采用RabbitMQ、ZeroMQ、RocketMQ或ActiveMQ中的一种或多种。
进一步地,所述调度事件消息队列、所述抓取事件消息队列、所述抓取完成事件队列采用Kafka。
进一步地,所述抓取任务缓冲队列可以采用Redis、MongoDB、或Pika中的一种或多种。
本发明还提供了一种基于事件驱动模型的分布式互联网数据采集方法,所述方法包括以下步骤:
步骤1、通过所述控制台模块创建带有唯一标识号的数据采集任务,并对所述数据采集任务进行配置;
步骤2、所述爬虫调度服务根据所述唯一标识号获取所述数据采集任务的元信息,并将所述元信息打包为数据调度事件放入所述调度事件消息队列;
步骤3、所述链接调度服务消费所述调度事件消息队列中的事件,生成需要执行的数据采集任务,并向所述抓取事件消息队列中发送数据下载事件;
步骤4、所述下载服务消费所述抓取事件消息队列中的事件,从目标网站完成原始网页的下载;
步骤5、所述解析服务根据所述数据采集系统生成的数据解析事件对所述原始网页进行解析,并获取目标数据;
步骤6、所述数据校验服务根据所述数据采集系统生成的数据校验事件对所述目标数据进行校验,以核验所述目标数据的合格性;
步骤7、如果所述目标数据的校验合格,则所述数据采集系统生成数据入库事件,由所述数据存储模块根据所述数据入库事件中所携带的所述元信息将所述目标数据存入数据库。
进一步地,所述步骤3包括:
步骤3.1、所述链接调度服务消费所述调度事件消息队列中的事件,生成需要执行的采集任务,并打包成一条条的消息,放入抓取任务缓冲队列中;
步骤3.2、所述链接调度服务根据所述控制台模块所配置的采集频率,从所述抓取任务缓冲队列中获取任务,向所述抓取事件消息队列中发送数据下载事件。
本发明所提供的技术方案带来以下有益效果:
1、本发明采用云原生的技术架构,系统各组件彼此解耦合,并以容器方式部署在容器编排系统中,采用开源的分布式消息队列作为事件分发组件。因此系统在分布式工作的同时,具备快速地动态扩容和缩容的能力,因而支持日采集TB量级别海量数据的需求。同时,系统还具备一定的自动运维能力,如快速自动部署、自动重启等。
2.本发明以事件驱动模型进行工作,将复杂多样的数据来源、数据处理方式抽象为几类典型的事件,支持同时对上千种不同来源的网站进行数据采集。
3.本发明将数据采集中所涉及的所有底层技术要素全部进行了封装,并向用户提供Sass化的控制台。用户通过几项常规性的页面配置即可实现对特定网站的数据采集。一般地,对任何会使用计算机的人员来说,仅通过两天左右的培训,即可熟练地使用本发明进行互联网数据采集。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是火车采集器的示意图;
图2是神箭手数据采集系统的示意图;
图3是Django Dynamic Scraper的示意图;
图4是本发明的一个较佳实施例的系统框图;
图5是本发明的一个较佳实施例的系统框图;
图6是本发明的一个较佳实施例的系统框图;
图7是本发明的控制台前端的部分功能截图;
图8是本发明的一个较佳实施例的系统框图;
图9是本发明的一个较佳实施例的系统框图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
实施例一
如图4所述,为一种基于事件驱动模型的分布式互联网数据采集系统,包括控制台模块、数据采集引擎模块、数据存储模块、日志服务模块;
整个数据系统运行在容器编排引擎之上;
控制台模块对数据采集进行配置,包括配置爬虫调度解析规则、触发爬虫运行停止等各种事件,并完成对数据存储的相关配置。
数据采集引擎模块根据控制台模块的配置完成数据采集;数据采集引擎模块根据用户配置的规则从对应的网站抓取并解析相关的网页,输出为结构化数据和解析后的页面。
数据存储模块与数据采集引擎模块连接,根据控制台模块的配置完成数据存储;
日志服务模块实现对数据采集系统各个组件实时工作状态的日志搜集,以监控系统各组件的工作状态。
控制台模块、数据采集引擎模块、数据存储模块和日志服务模块都各包含一项或多项服务;
控制台模块、数据采集引擎模块、数据存储模块和日志服务模块所包含的服务互相解耦,以独立Docker镜像的形式部署于容器编排引擎之上。
基于容器编排引擎对于Docker镜像弹性伸缩的机制,理论上本发明所提供的数据采集系统可以实现无限伸缩。除存储外,系统中的所有服务和组件互相解耦且无状态,一旦某一处成为系统瓶颈,可利用容器编排引擎进行快速扩容。基于这一设计架构,本发明可以保证系统在分布式工作的同时,还具备快速地动态扩容和缩容的能力,以面对TB级海量数据的采集需求。
其中,整个数据采集系统以事件驱动模型进行构建,不同的服务之间通过事件的形式进行传递。对于数据采集的整个生命周期,均以事件的形式进行传递和实现。基于事件驱动模型的设计,可以将多种不同的采集目标网站、下载方式、解析方式、数据校验方式以及数据入库方式封装为统一的事件,不同组件通过函数回调等形式实现对于不同数据源的数据采集。
其中,容器编排引擎可以为为kubernetes、docker swarm、Marathon、ApacheMesos或Nomad中的一种。
实施例二
如图5所示,在实施例一的基础上,数据采集引擎模块包括调度组件、下载解析组件和数据校验组件;调度组件与下载解析组件配合完成数据采集;下载解析组件与数据校验组件配合对数据采集进行校验。
其中,调度组件用于生成待爬取的任务,并管理任务状态;下载解析组件调用各种服务高效完成页面下载解析工作,按照不同配置要求,新链接可能会被继续下载;数据校验组件用于对进入数据库前的数据进行合格性检验,以提高数据质量。
实施例三:
如图6所示,在实施例二的基础上,调度组件包括爬虫调度服务和链接调度服务。
在爬虫调度服务和链接调度服务之间设有调度事件消息队列;链接调度服务还连接抓取事件消息队列。
爬虫调度服务检查当前时间满足用户所配置项目的执行时间和周期后,根据任务的唯一标识号从相应的配置数据库中获取该任务的抓取任务元信息,包括目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息,并将元信息打包为数据调度事件放入调度事件消息队列中。
链接调度服务通过消费调度事件消息队列中的事件生成需要执行的采集任务放入抓取事件消息队列中;下载服务通过消费抓取事件消息队列中的事件调用下载辅助服务和代理服务下载原始网页;解析服务通过对原始网页进行解析获取目标数据;数据校验服务对目标数据进行校验。
其中,在调度事件消息队列与链接调度服务之间还设有抓取任务缓冲队列。
其中,抓取任务缓冲队列采用Redis、MongoDB、或Pika。
下载解析组件包括下载服务、解析服务。
其中,下载解析组件封装PycURL、splash、Chrome Headless,并提供统一接口。
下载服务连接抓取事件消息队列,根据从抓取事件消息队列中获取的数据下载事件下载原始网页。
解析服务连接下载服务,对原始网页进行解析获取目标数据。
下载解析组件还包括代理服务、下载辅助服务。
数据校验组件包括数据校验服务;数据校验服务连接解析服务,对目标数据进行校验。
控制台模块包括控制台和爬虫状态服务及配置服务。
控制台分为控制台前端页面(如图7所示)和控制台后端。
控制台前端页面为Sass化的控制台前端页面,提供可视化的控制台面板,可以对数据采集的整个生命周期进行配置和管理,包括数据采集周期、数据采集网页范围、网页下载配置、网页抽取配置、项目管理。在完成配置之后,将数据采集项目信息通过爬虫状态服务及配置服务与数据采集引擎模块中的爬虫调度服务之间的连接传递给爬虫调度服务。
控制台后端提供后端服务支持。控制台模块用于配置爬虫调度解析规则、触发爬虫运行停止等各种事件,并完成对数据存储的相关配置。
其中,控制台后端可以采用Flask、Django、Pylons、Tornado或Bottle框架。
数据存储模块包括数据存储服务;数据存储服务与解析服务连接。
数据存储服务连接数据库;数据库支持MySQL、MongoDB和对象存储服务。
在数据存储服务与解析服务之间还设置有抓取完成事件队列。
在该分布式互联网数据采集系统的基础上,要实现一次完整的数据采集,包括以下步骤:
步骤1、通过控制台模块的控制台界面,创建带有唯一标识号的数据采集任务,并对数据采集任务进行配置,包括配置目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息;
步骤2、爬虫调度服务检查当前时间满足用户所配置项目的执行时间和周期后,根据任务的唯一标识号从相应的配置数据库中获取该任务的抓取任务元信息,包括目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息,并将元信息打包为数据调度事件放入调度事件消息队列中;
步骤3、链接调度服务消费调度事件消息队列中的事件,生成需要执行的数据抓取任务,并打包成一条条的数据抓取事件放入抓取任务缓冲队列中;同时链接调度服务根据用户在控制台模块所配置的采集频率,从抓取任务缓冲队列中获取数据抓取任务,向抓取事件消息队列中发送数据下载事件;
步骤4、下载服务消费抓取事件消息队列中的事件,调用下载辅助服务获取cookie、header、缓存等信息,然后通过代理服务从目标网站完成原始网页的下载;
步骤5、完成原始网页下载之后,数据采集系统生成一个数据解析事件,解析服务根据数据解析事件中所携带的元信息对原始网页进行解析,并获取目标数据;
步骤6、完成数据解析之后,数据采集系统生成一个数据校验事件;数据校验服务根据数据采集系统生成数据校验事件中所携带的元信息对目标数据进行校验,以核验目标数据的合格性;
步骤7、如果目标数据的校验合格,数据采集系统生成数据入库事件,由数据存储模块根据数据入库事件中所携带的元信息将目标数据存入数据库。
实施例四:
如图8所示,在实施例三的基础上,该分布式互联网数据采集系统的各个模块由Python 2.7编写完成。
其中,控制台后端采用Flask开源框架。
调度组件中的消息队列,包括调度事件消息队列和抓取事件消息队列,采用开源的RabbitMQ。数据存储服务中的抓取完成事件队列也采用RabbitMQ。
除了RabbitMQ,还可以选用ZeroMQ、RocketMQ或ActiveMQ等。
下载解析组件中封装了PycURL,splash,Chrome Headless,并提供统一接口。splash和Chrome Headless用于对Ajax加载等的动态网页进行下载。在下载解析组件中,采用Python的lxml库构建DOM树。在建树之前和之后,会根据用户配置以及一些内置策略,如字段的xpath/css/jsonpath表达式等,对数据进行抽取和清洗。除此之外,也支持json和类json数据的解析。
数据存储模块中的数据库采用MongoDB作为最终可靠存储。
在该分布式互联网数据采集系统的基础上,要实现一次完整的数据采集,包括以下步骤:
步骤1、通过控制台模块的控制台界面,创建带有唯一标识号的数据采集任务,并对数据采集任务进行配置,包括配置目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息;
步骤2、爬虫调度服务检查当前时间满足用户所配置项目的执行时间和周期后,根据任务的唯一标识号从相应的配置数据库中获取该任务的抓取任务元信息,包括目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息,并将元信息打包为数据调度事件放入调度事件消息队列RabbitMQ中;
步骤3、链接调度服务消费调度事件消息队列RabbitMQ中的事件,生成需要执行的数据抓取任务,并向抓取事件消息队列RabbitMQ中发送数据下载事件;
步骤4、下载服务消费抓取事件消息队列RabbitMQ中的事件,调用下载辅助服务获取cookie、header、缓存等信息,然后通过代理服务从目标网站完成原始网页的下载;
步骤5、完成原始网页下载之后,数据采集系统生成一个数据解析事件,解析服务根据数据解析事件中所携带的元信息对原始网页进行解析,并获取目标数据;
步骤6、完成数据解析之后,数据采集系统生成一个数据校验事件;数据校验服务根据数据采集系统生成数据校验事件中所携带的元信息对目标数据进行校验,以核验目标数据的合格性;
步骤7、如果目标数据的校验合格,数据采集系统生成数据入库事件,由数据存储模块根据数据入库事件中所携带的元信息将目标数据存入MongoDB。
实施例五:
如图9所示,在实施例一的基础上,该分布式互联网数据采集系统的各个模块由Python 3.5编写完成。
其中,控制台后端采用Django开源框架。
调度组件中的消息队列,包括调度事件消息队列和抓取事件消息队列,采用开源的Kafka。数据存储服务中的抓取完成事件队列也采用Kafka。
抓取任务缓冲队列采用Redis。
下载解析组件中封装了PycURL,splash,Chrome Headless,并提供统一接口。splash和Chrome Headless用于对Ajax加载等的动态网页进行下载。在下载解析组件中,采用Python的lxml库构建DOM树。在建树之前和之后,会根据用户配置以及一些内置策略,如字段的xpath/css/jsonpath表达式等,对数据进行抽取和清洗。除此之外,也支持json和类json数据的解析。
数据存储模块中的数据库采用MySQL和对象存储服务作为最终可靠存储,可实现每日TB级别的数据存储。
在该分布式互联网数据采集系统的基础上,要实现一次完整的数据采集,包括以下步骤:
步骤1、通过控制台模块的控制台界面,创建带有唯一标识号的数据采集任务,并对数据采集任务进行配置,包括配置目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息;
步骤2、爬虫调度服务检查当前时间满足用户所配置项目的执行时间和周期后,根据任务的唯一标识号从相应的配置数据库中获取该任务的抓取任务元信息,包括目标网站、数据解析规则及存储字段、数据校验方式、项目执行时间和周期、数据库配置等信息,并将元信息打包为数据调度事件放入调度事件消息队列Kafka中;
步骤3、链接调度服务消费调度事件消息队列Kafka中的事件,生成需要执行的数据抓取任务,并向抓取事件消息队列Kafka中发送数据下载事件;
步骤4、下载服务消费抓取事件消息队列Kafka中的事件,首先查看缓存中是否已经存有此抓取事件对应的原始网页;如果存在,则直接从缓存中获取原始网页,并跳过从互联网下载的步骤;如果不存在,则调用下载辅助服务获取cookie、header等信息,然后通过代理服务从目标网站下载原始网页;
步骤5、完成原始网页下载之后,数据采集系统生成一个数据解析事件,解析服务根据数据解析事件中所携带的元信息对原始网页进行解析,并获取目标数据;
步骤6、完成数据解析之后,数据采集系统生成一个数据校验事件;数据校验服务根据数据采集系统生成数据校验事件中所携带的元信息对目标数据进行校验,以核验目标数据的合格性;
步骤7、如果目标数据的校验合格,数据采集系统生成数据入库事件,由数据存储模块根据数据入库事件中所携带的元信息将目标数据存入Mysql或对象存储服务中。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (10)

1.一种基于事件驱动模型的分布式互联网数据采集系统,其特征在于,包括控制台模块、数据采集引擎模块、数据存储模块、日志服务模块;
所述系统运行在容器编排引擎之上;
所述控制台模块对数据采集和数据存储进行配置;
所述数据采集引擎模块根据所述控制台模块的配置完成所述数据采集;
所述数据存储模块与所述数据采集引擎模块连接,根据所述控制台模块的配置完成所述数据存储;
所述控制台模块、所述数据采集引擎模块、所述数据存储模块和所述日志服务模块都各包含一项或多项服务;
所述服务互相解耦,以独立Docker镜像的形式部署于所述容器编排引擎之上。
2.如权利要求1所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述服务之间通过事件的形式进行传递。
3.如权利要求1所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述容器编排引擎为kubernetes、docker swarm、Marathon、Apache Mesos或Nomad中的一种。
4.如权利要求2所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述数据采集引擎模块包括调度组件、下载解析组件和数据校验组件;所述调度组件与所述下载解析组件配合完成所述数据采集;所述下载解析组件与所述数据校验组件配合对所述数据采集进行校验。
5.如权利要求4所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述调度组件包括爬虫调度服务和链接调度服务;在所述爬虫调度服务和所述链接调度服务之间设有调度事件消息队列;所述链接调度服务还连接抓取事件消息队列;在所述调度事件消息队列与所述链接调度服务之间还设有抓取任务缓冲队列。
6.如权利要求5所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述下载解析组件包括下载服务、解析服务;所述下载解析组件封装PycURL、splash、Chrome Headless,并提供统一接口;所述下载服务连接所述抓取事件消息队列,根据从所述抓取事件消息队列中获取的数据下载事件下载原始网页;所述解析服务连接所述下载服务,对所述原始网页进行解析获取目标数据;所述下载解析组件还包括代理服务、下载辅助服务。
7.如权利要求6所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述数据校验组件包括数据校验服务;所述数据校验服务连接所述解析服务,对所述目标数据进行校验。
8.如权利要求7所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述控制台模块包括控制台和爬虫状态服务及配置服务;所述控制台分为控制台前端页面和控制台后端;所述控制台前端页面提供可视化的控制台面板,可以对所述数据采集的整个生命周期进行配置和管理,包括数据采集周期、数据采集网页范围、网页下载配置、网页抽取配置、项目管理;所述控制台后端采用Flask、Django、Pylons、Tornado或Bottle中的一种或多种框架;所述爬虫状态服务及配置服务与所述爬虫调度服务连接。
9.如权利要求7所述的基于事件驱动模型的分布式互联网数据采集系统,其特征在于,所述数据存储模块包括数据存储服务;所述数据存储服务与所述解析服务连接;所述数据存储服务连接数据库;所述数据库支持MySQL、MongoDB和对象存储服务。
10.一种基于事件驱动模型的分布式互联网数据采集方法,其特征在于,所述方法应用于权利要求7至权利要求9中任意一种所述的数据采集系统;
所述方法包括以下步骤:
步骤1、通过所述控制台模块创建带有唯一标识号的数据采集任务,并对所述数据采集任务进行配置;
步骤2、所述爬虫调度服务根据所述唯一标识号获取所述数据采集任务的元信息,并将所述元信息打包为数据调度事件放入所述调度事件消息队列;
步骤3、所述链接调度服务消费所述调度事件消息队列中的事件,生成需要执行的数据采集任务,并向所述抓取事件消息队列中发送数据下载事件;
步骤4、所述下载服务消费所述抓取事件消息队列中的事件,从目标网站完成原始网页的下载;
步骤5、所述解析服务根据所述数据采集系统生成的数据解析事件对所述原始网页进行解析,并获取目标数据;
步骤6、所述数据校验服务根据所述数据采集系统生成的数据校验事件对所述目标数据进行校验,以核验所述目标数据的合格性;
步骤7、如果所述目标数据的校验合格,则所述数据采集系统生成数据入库事件,由所述数据存储模块根据所述数据入库事件中所携带的所述元信息将所述目标数据存入数据库。
CN201910599035.4A 2019-07-04 2019-07-04 基于事件驱动模型的分布式互联网数据采集系统与方法 Active CN110347899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910599035.4A CN110347899B (zh) 2019-07-04 2019-07-04 基于事件驱动模型的分布式互联网数据采集系统与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910599035.4A CN110347899B (zh) 2019-07-04 2019-07-04 基于事件驱动模型的分布式互联网数据采集系统与方法

Publications (2)

Publication Number Publication Date
CN110347899A true CN110347899A (zh) 2019-10-18
CN110347899B CN110347899B (zh) 2021-06-22

Family

ID=68178280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910599035.4A Active CN110347899B (zh) 2019-07-04 2019-07-04 基于事件驱动模型的分布式互联网数据采集系统与方法

Country Status (1)

Country Link
CN (1) CN110347899B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221831A (zh) * 2019-12-26 2020-06-02 杭州顺网科技股份有限公司 一种对广告效果数据实时处理的计算系统
CN111737528A (zh) * 2020-06-23 2020-10-02 Oppo(重庆)智能科技有限公司 一种数据采集校验方法、装置、电子设备及存储介质
CN111813406A (zh) * 2020-07-14 2020-10-23 深圳前海移联科技有限公司 一种动态的事件驱动模型
CN111984436A (zh) * 2020-08-25 2020-11-24 中央广播电视总台 一种数据采集系统
CN112597133A (zh) * 2020-12-29 2021-04-02 深圳复临科技有限公司 一种百人研发团队项目管理场景的数据应用管理系统
CN113595832A (zh) * 2021-08-04 2021-11-02 中国光大银行股份有限公司 一种网络数据获取系统和方法
CN113791889A (zh) * 2021-11-18 2021-12-14 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN114297172A (zh) * 2022-01-04 2022-04-08 北京乐讯科技有限公司 一种基于云原生的分布式文件系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048440A (ja) * 2004-08-05 2006-02-16 Fujitsu Social Science Laboratory Ltd 移動体追跡処理装置、移動体追跡処理プログラム及び移動体追跡処理方法
US20140108419A1 (en) * 2011-01-31 2014-04-17 Google Inc. Method for efficiently querying multiple points in an indexed quadtree
CN104216963A (zh) * 2014-08-22 2014-12-17 南京邮电大学 一种基于HBase的海量网管数据采集和存储方法
CN107895009A (zh) * 2017-11-10 2018-04-10 北京国信宏数科技有限责任公司 一种基于分布式的互联网数据采集方法及系统
CN108388472A (zh) * 2018-03-01 2018-08-10 吉林大学 一种基于Docker集群的弹性任务调度系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048440A (ja) * 2004-08-05 2006-02-16 Fujitsu Social Science Laboratory Ltd 移動体追跡処理装置、移動体追跡処理プログラム及び移動体追跡処理方法
US20140108419A1 (en) * 2011-01-31 2014-04-17 Google Inc. Method for efficiently querying multiple points in an indexed quadtree
CN104216963A (zh) * 2014-08-22 2014-12-17 南京邮电大学 一种基于HBase的海量网管数据采集和存储方法
CN107895009A (zh) * 2017-11-10 2018-04-10 北京国信宏数科技有限责任公司 一种基于分布式的互联网数据采集方法及系统
CN108388472A (zh) * 2018-03-01 2018-08-10 吉林大学 一种基于Docker集群的弹性任务调度系统及方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221831A (zh) * 2019-12-26 2020-06-02 杭州顺网科技股份有限公司 一种对广告效果数据实时处理的计算系统
CN111221831B (zh) * 2019-12-26 2024-03-29 杭州顺网科技股份有限公司 一种对广告效果数据实时处理的计算系统
CN111737528A (zh) * 2020-06-23 2020-10-02 Oppo(重庆)智能科技有限公司 一种数据采集校验方法、装置、电子设备及存储介质
CN111813406A (zh) * 2020-07-14 2020-10-23 深圳前海移联科技有限公司 一种动态的事件驱动模型
CN111813406B (zh) * 2020-07-14 2022-03-11 深圳前海移联科技有限公司 一种动态的事件驱动模型
CN111984436A (zh) * 2020-08-25 2020-11-24 中央广播电视总台 一种数据采集系统
CN112597133A (zh) * 2020-12-29 2021-04-02 深圳复临科技有限公司 一种百人研发团队项目管理场景的数据应用管理系统
CN113595832A (zh) * 2021-08-04 2021-11-02 中国光大银行股份有限公司 一种网络数据获取系统和方法
CN113791889A (zh) * 2021-11-18 2021-12-14 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN113791889B (zh) * 2021-11-18 2022-03-11 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN114297172A (zh) * 2022-01-04 2022-04-08 北京乐讯科技有限公司 一种基于云原生的分布式文件系统
CN114297172B (zh) * 2022-01-04 2022-07-12 北京乐讯科技有限公司 一种基于云原生的分布式文件系统

Also Published As

Publication number Publication date
CN110347899B (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN110347899A (zh) 基于事件驱动模型的分布式互联网数据采集系统与方法
CN110989983B (zh) 一种零编码的应用软件快速构建系统
Lai et al. Fedscale: Benchmarking model and system performance of federated learning at scale
Günther et al. A Generic Import Framework for Process Event Logs: Industrial Paper
CN109284430A (zh) 基于分布式架构的可视化主题网页内容爬取系统及方法
CN108037919A (zh) 一种基于web的可视化大数据工作流配置方法及系统
CN109656963A (zh) 元数据获取方法、装置、设备及计算机可读存储介质
Liu et al. CrowdOS: A ubiquitous operating system for crowdsourcing and mobile crowd sensing
CN110221975A (zh) 创建接口用例自动化测试脚本的方法及装置
CN104731606B (zh) 基于识别抓取技术实现企业应用集成管理的系统及方法
CN110471652A (zh) 任务编排方法、编排器、设备及可读存储介质
Liew et al. Towards optimising distributed data streaming graphs using parallel streams
CN105512261A (zh) 前端轻量统计数据展现方法及系统
CN108664657A (zh) 一种大数据任务调度方法、电子设备、存储介质及平台
CN110825641B (zh) 一种基于模拟数据生成器的微服务应用测试系统
CN110968620A (zh) 一种敏捷数据分析方法
CN109144648A (zh) 统一地执行特征抽取的方法及系统
Ameloot Declarative networking: Recent theoretical work on coordination, correctness, and declarative semantics
US20060235660A1 (en) Customized processing in association with finite element analysis
CN105893265A (zh) 软件项目自动检测系统及方法
CN109377156A (zh) 一种工程造价项目审核方法
CN113590358A (zh) 基于rpa的服务并发治理方法及装置
CN114490610A (zh) 用于数据仓的数据处理方法以及装置、存储介质、电子装置
CN111680204A (zh) 数据采集方法、装置及计算机可读存储介
Fernando et al. Workflowdsl: Scalable workflow execution with provenance for data analysis applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant