基于浏览器的数据获取方法、装置和系统

文档序号:1921686 发布日期:2021-12-03 浏览:6次 >En<

阅读说明:本技术 基于浏览器的数据获取方法、装置和系统 (Data acquisition method, device and system based on browser ) 是由 揭鹏 万友先 李文辉 张鑫 陈帅 于 2021-08-20 设计创作,主要内容包括:本发明实施例涉及信息获取技术领域,公开了一种基于浏览器的数据获取方法、装置和系统。该方法包括:使用WebKit创建浏览器,并编写自动化js脚本,存储到目标文件夹目录中;接收目标任务,并基于所述目标任务使所述浏览器跳转至目标页面;根据所述目标任务调取目标js脚本获取第一数据;对所述第一数据进行解析和清洗,得到目标数据并入库;返回目标任务结果状态。实施本发明实施例,可以通过自制WebKit浏览器以及自动化js脚本,快速自动爬取相关数据。(The embodiment of the invention relates to the technical field of information acquisition, and discloses a data acquisition method, device and system based on a browser. The method comprises the following steps: using WebKit to create a browser, compiling an automatic js script and storing the js script in a target folder directory; receiving a target task, and jumping the browser to a target page based on the target task; calling a target js script according to the target task to acquire first data; analyzing and cleaning the first data to obtain target data and storing the target data in a warehouse; and returning the result state of the target task. By implementing the embodiment of the invention, the related data can be quickly and automatically crawled through a self-made WebKit browser and an automatic js script.)

基于浏览器的数据获取方法、装置和系统

技术领域

本发明涉及基于数据获取技术领域,具体涉及一种基于浏览器的数据获取方法、装置和系统。

背景技术

随着反爬技术的进步,例如浏览器指纹识别、ajax页面数据动态加载以及JavaScript动态加密等技术的日益完善,网页数据获取难度也在增加,传统爬虫比如模拟浏览器直接发送请求,其伪造浏览器环境就变得非常困难,也有通过selenium框架驱动浏览器来完成数据爬取的相关开发,但是随着日益更新的自动化机器人检测,比如基于navigator、canvas等参数的检测,使得selenium框架驱动浏览器的开发难度逐渐加大,同时其稳定性也受到了很大的影响。

发明内容

针对所述缺陷,本发明实施例公开了一种基于浏览器的数据获取方法、装置和系统,其通过自制WebKit浏览器以及自动化js脚本,采用前后端分离的方式,可以快速自动爬取相关数据。

本发明实施例第一方面公开一种基于浏览器的数据获取方法,其包括:

使用WebKit创建浏览器,并编写自动化js脚本,存储到目标文件夹目录中;

接收目标任务,并基于所述目标任务使所述浏览器跳转至目标页面;

根据所述目标任务调取目标js脚本获取第一数据;

对所述第一数据进行解析和清洗,得到目标数据并入库;

返回目标任务结果状态。

作为较佳的实施例,在本发明实施例的第一方面中,接收目标任务,并基于所述目标任务使所述浏览器跳转至目标页面,包括:

接收目标任务,通过第一js脚本驱动所述浏览器跳转至目标页面。

作为较佳的实施例,在本发明实施例的第一方面中,根据所述目标任务调取目标js脚本获取第一数据,包括:

提取所述目标任务中的任务关键词;

根据所述任务关键词从所述目标文件夹目录中调取对应的目标js脚本;

利用所述目标js脚本在所述目标页面中爬取第一数据。

作为较佳的实施例,在本发明实施例的第一方面中,对所述第一数据进行解析和清洗,得到目标数据并入库,包括:

对所述第一数据进行解析,将解析后的第一数据封装成第二数据;

对所述第二数据进行清洗,得到目标数据;

将所述目标数据存储于目标数据库中。

本发明实施例第二方面公开一种基于浏览器的数据获取装置,其包括:

创建单元,用于使用WebKit创建浏览器,并编写自动化js脚本,存储到目标文件夹目录中;

接收单元,用于接收目标任务,并基于所述目标任务使所述浏览器跳转至目标页面;

获取单元,用于根据所述目标任务调取目标js脚本获取第一数据;

处理单元,用于对所述第一数据进行解析和清洗,得到目标数据并入库;

返回单元,用于返回目标任务结果状态。

作为较佳的实施例,在本发明实施例的第二方面中,所述获取单元,包括:

提取子单元,用于提取所述目标任务中的任务关键词;

调用子单元,用于根据所述任务关键词从所述目标文件夹目录中调取对应的目标js脚本;

爬取子单元,用于利用所述目标js脚本在所述目标页面中爬取第一数据。

本发明实施例第三方面公开一种基于浏览器的数据获取系统,包括:

任务调度模块,用于接收前端发送的目标任务;

数据采集模块,用于接收所述任务调度模块发送的目标任务,并根据所述目标任务获取第一数据;

管道模块,用于对所述第一数据进行清洗并入库;

其中,所述数据采集模块包括自动化js脚本模块和浏览器模块,所述自动化js脚本模块接收所述目标任务,并根据所述目标任务调用相应的自动化js脚本,使得所述浏览器模块跳转到目标页面,并爬取目标页面中的第一数据。

作为较佳的实施例,在本发明实施例的第三方面中,所述自动化js脚本模块包括存储有编写的自动化js脚本的目标文件夹,以及任务获取更新模块和解析模块,所述任务获取更新模块获取所述目标任务,调取自动化js脚本中的第一js脚本驱动所述浏览器模块跳转至目标页面,并调取自动化js脚本中的目标js脚本自动爬取所述目标页面的第一数据;所述解析模块用于接收所述第一数据,并对所述第一数据进行解析,将解析后的第一数据封装成第二数据后,发送至任务获取更新模块。

作为较佳的实施例,在本发明实施例的第三方面中,所述任务调度模块接收任务获取更新模块发送的第二数据,并调取管道模块中的数据提取清洗模块对所述第二数据进行清洗,得到目标数据,所述任务调度模块还调取管道模块中的数据读写操作模块将所述目标数据存储于目标数据库中。

本发明实施例第四方面公开一种电子设备,包括:存储有可执行程序代码的存储器;与所述存储器耦合的处理器;所述处理器调用所述存储器中存储的所述可执行程序代码,用于执行本发明实施例第一方面公开的一种基于浏览器的数据获取方法。

本发明实施例第五方面公开一种计算机可读存储介质,其存储计算机程序,其中,所述计算机程序使得计算机执行本发明实施例第一方面公开的一种基于浏览器的数据获取方法。

本发明实施例第六方面公开一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本发明实施例第一方面公开的一种基于浏览器的数据获取方法。

本发明实施例第七方面公开一种应用发布平台,所述应用发布平台用于发布计算机程序产品,其中,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本发明实施例第一方面公开的一种基于浏览器的数据获取方法。

与现有技术相比,本发明实施例具有以下有益效果:

本发明实施例将WebKit引擎集成到自己的应用程序中,以提供Web的支持,通过WebKit引擎开发对应的浏览器,采用前后端分离,面向不同页面,只需要根据不同的需求,载入定制的js脚本就可以完成任务,开发简单,稳定性高。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人体来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例公开的一种基于浏览器的数据获取方法的流程示意图;

图2是本发明实施例公开的一种基于浏览器的数据获取装置的结构示意图;

图3是本发明实施例公开的一种基于浏览器的数据获取系统的架构图;

图4是本发明实施例公开的一种基于浏览器的数据获取系统的实现流程图;

图5是本发明实施例公开的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人体在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同的对象,而不是用于描述特定顺序。本发明实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,示例性地,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本发明实施例公开了一种基于浏览器的数据获取方法、装置和系统,其将WebKit引擎集成到PyQt框架开发的采集系统中,以提供Web的支持,这也就是说可以基于自己的数据抓取需求,开发对应的简单浏览器,采用前后端分离,面向不同页面,系统只需要根据不同的需求,载入定制的js就可以完成任务,以下结合附图进行详细描述。

实施例一

请参阅图1,图1是本发明实施例公开的一种基于浏览器的数据获取方法的流程示意图。如图1所示,该基于浏览器的数据获取方法包括以下步骤:

S110、使用WebKit创建浏览器,并编写自动化js脚本,存储到目标文件夹目录中。

本发明的数据获取为基于PyQt框架搭建数据采集系统,以从互联网中爬取需要的数据。将WebKit引擎集成于PyQt框架中,通过WebKit引擎创建浏览器,以作为后端的数据采集的一部分,与自动化js脚本一起,完成自动数据采集工作。

自动化js脚本分为两部分,其中一部分用于驱动浏览器的跳转,成为第一js脚本,另一部分用于在浏览器跳转到具体页面后,对该具体页面的数据进行自动爬取的第二js脚本,针对具体目标任务的第二js脚本,称为目标js脚本。

针对第一js脚本,其可以是一直处于后台运行的脚本,当前端有任务生成并发送到后端后,该第一js脚本基于任务中的url驱动浏览器跳转。

第二js脚本有多个,根据具体的需求分别定制编写。可以通过目标任务的关键词等信息选取对应的第二js脚本作为目标js脚本,实现数据获取。将多个第二js脚本存储于指定的文件夹目录中,可以通过数据调度模块调取相应的第二js脚本中的目标js脚本完成数据获取,当然,也可以由浏览器或第一js脚本根据目标任务调取目标js脚本。

S120、接收目标任务,并基于所述目标任务使所述浏览器跳转至目标页面。

目标任务由需求方提供,其可通过前端的可视化界面选择或输入相关任务,或者提供目标任务信息到供应方,例如本数据采集系统的开发方或者使用方,由其将目标任务录入。前端和后端通过预设设置的API接口完成对接,API接口可以通过flask编写和定制,实现了前后端的分离。

后端接收到目标任务后,由后台一直运行的第一js脚本驱动浏览器跳转到目标页面。页面跳转可以通过第一js脚本先获取目标任务中的url信息,然后驱动浏览器根据该url信息实现页面跳转,如果页面跳转失败,则也可以向前端发送相应的提醒信息。

第一js脚本先将目标任务添加到任务队列中,当在前的数据获取过程完成后,即获取到第一数据后,再对在后的目标任务通过第一js脚本来驱动浏览器跳转,在在前的数据获取未完成后,第一js脚本可以后台静默形式以固定时间间隔发送请求,直到在前的数据获取完成后,浏览器再针对该请求由第一js脚本驱动其进行页面跳转。

在一些其他的实施例中,也可以为各个目标任务设置优先级,在任务队列中按照优先级顺序对各个目标任务进行数据获取操作。

在一些其他的实施例中,还可以设置多个进程,每个进程对应一个目标任务,即实现多个目标任务并行处理。第一js脚本先将目标任务添加到任务队列中,判断当前运行的进程数是否超过预设进程数,如果未超过,则启动一个新进程,通过第一js脚本驱动浏览器在该进程中实现跳转,在获取到第一数据后,或者在获取到目标数据后,则自动删除该进程。挡当前运行的进程数超过预设进程数时,可以按照前述方法将目标任务放置于任务队列中,采用FIFO原则或者优先级顺序对任务队列中的目标任务进行数据获取操作。

通过并行方式的数据获取方式,很显然可以提高工作效率,而且,即使不同的目标任务调取同一第二js脚本中的目标js脚本,也不会存在冲突。

S130、根据所述目标任务调取目标js脚本获取第一数据。

由于第二js脚本一般为定制脚本,即可以根据具体需求为每个目标任务均定制相应的目标js脚本。作为一种实现方式,可以是以各目标任务的url中的关键词例如域名来命名第二js脚本,当获取到目标任务时,提取url中的关键词去调取与关键词名称相同的第二js脚本集合中的第二js脚本,作为目标js脚本即可。

当然,在一些其他的实施例中,也可以是通用性第二js脚本,即对于不同的目标任务,可以使用相同的第二js脚本来实现数据爬取操作。例如,当url包含gov的内容,可以设置第二js脚本的名称为gov.js,则可以对这类网址提取政策性信息。

例如,浏览器跳转后,目标js脚本gov.js用于获取所有详情页的标题、发布时间、发布机构、正文以及附件五个字段的信息,作为第一数据。标题的name属性一般为ArticleTitle,发布时间的name属性一般为PubDate,发布机构的name属性一般为ContentSource,通过这些name属性,则根据name属性可以获取五个字段的前三个字段的数据信息,然后再对所有src和href属性进行提取,再对链接后缀进行进一步过滤,只提取包含以下后缀'pdf'、'jpg'、'png'、'xls'、'doc'、'xlsx'、'docx'、'rar'、'gif'、'jpeg'、'wps'、'XLS'、'zip'等的链接,对于正文,把页面包含html标签的内容一并抓取下来,这样能够保留原始页面格式,所以对于正文内容范围,只需判断在哪个根节点标签下p标签最多的,即可把该根节点标签下的内容抓取下来。

S140、对所述第一数据进行解析和清洗,得到目标数据并入库。

获取到第一数据后,需要对第一数据进行解析,解析后的第一数据被封装成第二数据。对第二数据进行清洗,得到目标数据,然后将目标数据存储到相应的目标数据库中。

S150、返回目标任务结果状态。

向前端返回目标任务结果状态,目标任务结果状态分为两种,一种是上述步骤S120-S140顺利完成,则向前端发送目标任务已完成的提示信息,另一种是上述步骤中任意步骤出现了问题,则向前端发送目标任务未完成的提醒信息。

实施例二

请参阅图2,图2是本发明实施例公开的一种基于浏览器的数据获取装置的结构示意图。如图2所示,该基于浏览器的数据获取装置,可以包括:

创建单元210,用于使用WebKit创建浏览器,并编写自动化js脚本,存储到目标文件夹目录中;

接收单元220,用于接收目标任务,并基于所述目标任务使所述浏览器跳转至目标页面;

获取单元230,用于根据所述目标任务调取目标js脚本获取第一数据;

处理单元240,用于对所述第一数据进行解析和清洗,得到目标数据并入库;

返回单元250,用于返回目标任务结果状态。

可选地,所述获取单元230,包括:

提取子单元,用于提取所述目标任务中的任务关键词;

调用子单元,用于根据所述任务关键词从所述目标文件夹目录中调取对应的目标js脚本;

爬取子单元,用于利用所述目标js脚本在所述目标页面中爬取第一数据。

可选地,所述处理单元240,包括:

解析子单元,用于对所述第一数据进行解析,将解析后的第一数据封装成第二数据;

清洗子单元,用于对所述第二数据进行清洗,得到目标数据;

存储子单元,用于将所述目标数据存储于目标数据库中。

实施例三

本发明实施例三公开的一种基于浏览器的数据获取系统,该基于浏览器的数据获取系统整体基于PyQt框架创建,并在该PyQt框架中集成WebKit引擎,以通过WebKit引擎创建浏览器。

请参照图3和4所示,该浏览器的数据获取系统可以包括:

任务调度模块310,用于接收前端发送的目标任务;

数据采集模块320,用于接收所述任务调度模块发送的目标任务,并根据所述目标任务获取第一数据;

管道模块330,用于对所述第一数据进行清洗并入库;

其中,所述数据采集模块包括自动化js脚本模块321和浏览器模块322,所述自动化js脚本模块接收所述目标任务,并根据所述目标任务调用相应的自动化js脚本,使得所述浏览器模块跳转到目标页面,并爬取目标页面中的第一数据。

具体地,任务调度模块310包括flask模块311和业务模块312。其中,flask模块311可以包括API接口模块3111和任务调度本体模块3112,业务模块312可以包括业务逻辑模块3121。所述自动化js脚本模块321可以包括存储有编写的自动化js脚本的目标文件夹,以及通信模块3211、任务获取更新模块3212和解析模块3213。

需求方可以通过业务逻辑模块3121提交目标任务,API接口模块3111接收该目标任务并对其进行维护,通信模块3211订阅目标任务,当有目标任务时,将API接口模块接收到目标任务发送至任务获取更新模块3212,任务获取更新模块3212调取自动化js脚本中的第一js脚本驱动所述浏览器模块322跳转至目标页面,并调取自动化js脚本中的目标js脚本自动爬取所述目标页面的第一数据;所述解析模块3213用于接收所述第一数据,并对所述第一数据进行解析,将解析后的第一数据封装成第二数据后,再次发送至任务获取更新模块3212。

任务获取更新模块3212提交第二数据到API接口模块3111,任务调度本体模块3112接收第二数据,并调取管道模块33中的数据提取清洗模块331对所述第二数据进行清洗,得到目标数据,任务调度本体模块3112还调取管道模块33中的数据读写操作模块332将所述目标数据存储于目标数据库中。目标数据存储于目标数据库中,向任务调度本体模块3112发送目标任务结果状态,任务调度本体模块3112再通过API接口模块3111向业务逻辑模块发送该目标任务结果状态。

实施例四

请参阅图5,图5是本发明实施例公开的一种电子设备的结构示意图。如图5所示,该电子设备可以包括:

存储有可执行程序代码的存储器410;

与存储器410耦合的处理器420;

其中,处理器420调用存储器410中存储的可执行程序代码,执行实施例一中的一种基于浏览器的数据获取方法中的部分或全部步骤。

本发明实施例公开一种计算机可读存储介质,其存储计算机程序,其中,该计算机程序使得计算机执行实施例一中的一种基于浏览器的数据获取方法中的部分或全部步骤。

本发明实施例还公开一种计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行实施例一中的一种基于浏览器的数据获取方法中的部分或全部步骤。

本发明实施例还公开一种应用发布平台,其中,应用发布平台用于发布计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行实施例一中的一种基于浏览器的数据获取方法中的部分或全部步骤。

在本发明的各种实施例中,应理解,所述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物单元,即可位于一个地方,或者也可以分布到多个网络单元上。可根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或者部分,可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明的各个实施例所述方法的部分或全部步骤。

在本发明所提供的实施例中,应理解,“与A对应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。

本领域普通技术人体可以理解所述实施例的各种方法中的部分或全部步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

以上对本发明实施例公开的一种基于浏览器的数据获取方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于scrapy和puppeteer的动态数据抓取方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!