CN114661976A - 一种数据抓取的方法和装置 - Google Patents

一种数据抓取的方法和装置 Download PDF

Info

Publication number
CN114661976A
CN114661976A CN202210323130.3A CN202210323130A CN114661976A CN 114661976 A CN114661976 A CN 114661976A CN 202210323130 A CN202210323130 A CN 202210323130A CN 114661976 A CN114661976 A CN 114661976A
Authority
CN
China
Prior art keywords
node
data
functional
nodes
configuration file
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.)
Pending
Application number
CN202210323130.3A
Other languages
English (en)
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.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding 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 Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202210323130.3A priority Critical patent/CN114661976A/zh
Publication of CN114661976A publication Critical patent/CN114661976A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

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

Abstract

本发明公开了一种数据抓取的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;采用所述爬虫代码进行数据抓取,得到数据抓取结果。该实施方式采用基于使用者灵活建立的配置文件,后台按照配置文件动态生成爬虫代码,以进行数据抓取的方法,既实现了前端的无代码灵活配置,又降低了爬虫代码与网络客体环境的耦合性,从而达到了降低数据抓取的开发成本和使用门槛,进而提升开发效率的目的。

Description

一种数据抓取的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据抓取的方法和装置。
背景技术
随着计算机技术在各个领域的推广和应用,大数据时代应运而生,通过互联网、社交网络、物联网,我们能够及时全面地抓取有效的数据信息。目前数据抓取的常用方法是使用爬虫,爬虫是一段可以在网页上自动抓取信息的程序,通过爬虫,可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储,实现有效数据信息的获取。
在实现本发明过程中,发明人发现现有技术中存在如下问题:
在现实的应用中,虽然网络爬虫相关技术层出不穷,但是基本原理都是对爬取过程的封装,在实际使用时还需要使用者进行二次编码开发,存在定制化严重的问题;而且对于定制化的网络爬虫,由于与网络客体环境之间的强耦合性,致使维护和升级的成本增高,不利于实际应用。
发明内容
有鉴于此,本发明实施例提供一种数据抓取的方法和装置,通过采用基于使用者灵活建立的配置文件,后台按照配置文件动态生成爬虫代码以进行数据抓取的方法,既实现了前端的无代码灵活配置,又降低了爬虫代码与网络客体环境的耦合性,从而达到了降低数据抓取的开发成本和使用门槛,进而提升开发效率的目的。
为实现所述目的,根据本发明实施例的一个方面,提供了一种数据抓取的方法,包括:
响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;
解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;
采用所述爬虫代码进行数据抓取,得到数据抓取结果。
可选地,响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件,包括:响应于数据抓取请求,根据待抓取页面通过可视化界面定义不少于一个功能节点,所述功能节点包括:变量节点、循环节点、停止节点、抓取节点和输出节点;根据所述功能节点,对所述功能节点之间的组装规则进行配置得到配置文件。
可选地,解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码,包括:基于所述配置文件,通过工厂模式将所述功能节点编译为对应的节点执行器;通过责任链模式,按照所述组装规则将所述功能节点对应的节点执行器组装为爬虫代码。
可选地,若所述功能节点为变量节点,则将所述功能节点编译为变量节点执行器,所述变量节点执行器用于:将变量表达式解析为抽象语法树,结合变量存放容器中的原始变量,动态计算得到所述变量表达式的值,并作为条件变量存入所述变量存放容器,以供后续计算使用。
可选地,若所述功能节点为循环节点,则将所述功能节点编译为循环节点执行器;若所述功能节点为停止节点,则将所述功能节点编译为停止节点执行器;所述循环节点执行器用于指定抓取节点的并发执行,以及和停止节点执行器配合使用实现数据的循环抓取。
可选地,若所述功能节点为抓取节点,则将所述功能节点编译为抓取节点执行器,所述抓取节点执行器在进行页面数据抓取时支持统一资源定位符的去重设置。
可选地,采用所述爬虫代码进行数据抓取之前,还包括:根据所述配置文件,编译生成调试节点执行器,用于进行所述功能节点的调试。
根据本发明实施例的第二方面,提供一种数据抓取的装置,包括:
配置获取模块,用于响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;
爬虫代码获取模块,用于解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;
数据抓取模块,用于采用所述爬虫代码进行数据抓取,得到数据抓取结果。
根据本发明实施例的第三方面,提供一种数据抓取的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例第一方面提供的方法。
根据本发明实施例的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例第一方面提供的方法。
所述发明中的一个实施例具有如下优点或有益效果:通过响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对功能节点之间的组装规则进行配置得到配置文件;解析配置文件,根据组装规则对功能节点进行组装,得到爬虫代码;采用爬虫代码进行数据抓取,得到数据抓取结果的技术方案,采用基于使用者灵活建立的配置文件,后台按照配置文件动态生成爬虫代码以进行数据抓取的方法,既实现了前端的无代码灵活配置,又降低了爬虫代码与网络客体环境的耦合性,从而达到了降低数据抓取的开发成本和使用门槛,进而提升开发效率的目的。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据抓取方法的主要流程的示意图;
图2是本发明实施例的变量节点执行示意图;
图3是本发明实施例的可视化爬虫工具的数据抓取流程示意图;
图4是根据本发明实施例的数据抓取的装置的主要模块示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
目前在现实的应用场景中,虽然网络爬虫相关技术层出不穷,但是基本原理都是对爬取过程的封装,在实际使用时还需要使用者进行二次编码开发,存在定制化严重的问题;而且对于定制化的网络爬虫,由于与网络客体环境之间的强耦合性,致使维护和升级的成本增高,不利于实际应用。
为了解决现有技术中存在的上述问题,本发明提出一种数据抓取方法,采用基于使用者灵活建立的配置文件,后台按照配置文件动态生成爬虫代码以进行数据抓取的方法,既实现了前端的无代码灵活配置,又降低了爬虫代码与网络客体环境的耦合性,从而达到了降低爬虫成本和使用门槛,进而提升效率的目的。
在本发明的实施例介绍中,所涉及的名词及其含义如下:
XML:一种用于标记电子文件使其具有结构性的标记语言,XML被设计用来传输和存储数据,其焦点是数据的内容;
AST:Abstract Syntax Tree抽象语法树,是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构;
网络爬虫:一种按照一定的规则,自动地抓取万维网信息的程序或者脚本;
URL:Uniform Resource Locator统一资源定位器,在WWW上,每一信息资源都有统一的且在网上唯一的地址,它是WWW的统一资源定位标志,就是指网络地址;
Cookie:某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息;
MQ:Message Queue消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。
图1是根据本发明实施例的数据抓取方法的主要流程的示意图,如图1所示,本发明实施例的数据抓取方法包括如下的步骤S101至步骤S103。
步骤S101、响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件。
具体地,数据抓取通常体现在网页抓取中,是一个从网站中提取有价值信息的过程。根据待抓取的数据需求,明确待抓取网页页面,分析待抓取的数据相关参数并制定抓取策略;根据具体的抓取策略确定抓取过程中的主要功能,将功能按照节点进行划分定义;并对定义的功能节点进行组装规则的配置。
根据本发明的一个实施例,响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件,包括:响应于数据抓取请求,根据待抓取页面通过可视化界面定义不少于一个功能节点,所述功能节点包括:变量节点、循环节点、停止节点、抓取节点和输出节点;根据所述功能节点,对所述功能节点之间的组装规则进行配置得到配置文件。
具体地,使用者可在前端通过可视化界面,根据待抓取页面以及抓取策略,通过拖拽、勾选、输入、点击等界面操作进行抓取功能节点的定义,功能节点包括但不限于:变量节点、循环节点、停止节点、抓取节点和输出节点,其中变量节点用于设置、赋值数据抓取中需要的变量,可以是静态变量也可以是动态变量,例如:待抓取的个人信息的静态变量、通过读取指定网页参数的动态变量等;根据上述定义的功能节点,配置各个功能节点之间的组装规则,生成配置文件,此配置文件可以支持XML等多种数据格式,以便于后续后台系统的编译执行。
通过上述使用者在前端可视化界面中对数据抓取的相关功能节点和组装规则的拖拽、勾选、键入、点击等操作即可根据数据抓取需要灵活的进行配置文件的配置,实现了使用者无代码,可视化的配置。
步骤S102、解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码。
具体地,使用者在前端可视化界面上完成了上述的配置文件配置后,提交给后台系统,后台接收到配置文件后,对配置文件中定义的各个功能节点进行解析,并根据配置文件中的组装规则,对解析后的功能节点进行组装,得到爬虫代码,此爬虫代码可以是一段代码,也可以是具体化的爬虫工具。
根据本发明的一个实施例,解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码,包括:基于所述配置文件,通过工厂模式将所述功能节点编译为对应的节点执行器;通过责任链模式,按照所述组装规则将所述功能节点对应的节点执行器组装为爬虫代码。
具体地,后台系统对接收到的配置文件进行解析,通过工厂模式,根据各个功能节点编译为对应功能的节点执行器,且节点执行器采用接口化设计,实现统一的顶层接口,根据上述配置文件中定义的功能节点,相应的节点执行器包括但不限于:变量节点执行器、循环节点执行器、停止节点执行器、抓取节点执行器和输出节点执行器;通过责任链模式,按照配置文件中的组装规则将所述功能节点对应的节点执行器组装为爬虫代码,并加载到服务器的运行环境。
根据本发明的另一个实施例,若所述功能节点为变量节点,则将所述功能节点编译为变量节点执行器,所述变量节点执行器用于:将变量表达式解析为抽象语法树,结合变量存放容器中的原始变量,动态计算得到所述变量表达式的值,并作为条件变量存入所述变量存放容器,以供后续计算使用。
具体地,对于上述配置文件中的变量节点,将变量节点进行编译解析得到变量节点执行器,通过将变量表达式解析为AST抽象语法树,上下文作为存放变量的容器,通过上下文将原始变量添加到AST上,以实现动态计算所述变量表达式,并将计算得到的表达式的值存放在上下文中,作为后续计算的条件变量,另外,表达式也支持用户自定义扩展。
图2是本发明实施例的变量节点执行示意图,图中设定变量3为表达式变量,其参数分别为原始变量1和原始变量2,上下文中存放原始变量1和原始变量2,变量节点执行器首先将变量表达式3转换为AST抽象语法树,从上下文中获取原始变量1和原始变量2,继而计算出变量表达式3的值;再将变量表达式3的值存入存放了原始变量1和原始变量2的上下文中,以作为下一个变量计算的原始变量。
通过使用AST抽象语法树,实现了不依赖于语言文法的表达式的树形结构的相关表示,为前端、后端建立了清晰的接口。
根据本发明的再一个实施例,若所述功能节点为循环节点,则将所述功能节点编译为循环节点执行器;若所述功能节点为停止节点,则将所述功能节点编译为停止节点执行器;所述循环节点执行器用于指定抓取节点的并发执行,以及和停止节点执行器配合使用实现数据的循环抓取。
具体地,对于网站的URL,在有明显规律的情况下,设置相关变量来动态拼接URL,通过使用循环节点,进行多线程的并行爬取,以提高数据抓取的执行效率。若在上述配置文件中定义了循环节点,则将循环节点编译为循环节点执行器,用于通过设定循环条件,来进行并发多线程的数据抓取,其中循环条件支持复杂的表达式语法,而且可以动态的指定待抓取的内容是否支持并发执行,以满足各种使用需求;如果配置文件中定义了循环节点,那么还需要定义相应的停止节点,并将停止节点编译为停止节点执行器,用于等待循环节点执行完成后,再执行后续节点。
通过循环节点执行器和停止节点执行器的配合使用,实现了数据的循环抓取,提高了执行效率。
根据本发明的又一个实施例,若所述功能节点为抓取节点,则将所述功能节点编译为抓取节点执行器,所述抓取节点执行器在进行页面数据抓取时支持统一资源定位符的去重设置。
具体地,若上述配置文件中定义了抓取节点,则将抓取节点编译为抓取节点执行器,通过指定抓取的URL、抓取标签、请求方法、事件间隔、重试次数、页面编码、自定义Cookie等,实现网页的动态抓取,其中请求方法用于指示获取数据的方式(post或者get),事件间隔防止爬取的频率过高,导致被爬网站的反爬策略,页面编码指代页面的字符集编码,如常见的UTF-8编码。另外,此节点执行器支持爬取过程中的URL去重设置,以减少重复URL的爬取带来的时间资源开销,提高数据抓取效率。
另外地,若上述配置文件中还定义了输出节点,则将输出节点编译为输出节点执行器,根据上述节点抓取的页面信息,对抓取的数据进行提取和处理,动态的将所需字段输出到指定存储单元,可支持多种方式的输出,包括数据库、csv文件、excel文件等方式,也可支持将输出结果通过MQ发出。
步骤S103、采用所述爬虫代码进行数据抓取,得到数据抓取结果。
根据本发明的一个实施例,在采用所述爬虫代码进行数据抓取之前,还包括:根据所述配置文件,编译生成调试节点执行器,用于进行所述功能节点的调试。
具体地,在上述数据抓取配置完成后,编译生成调试节点执行器,直接在前端的可视化界面直观的进行配置文件中功能节点定义和节点之间组装规则的检查和调试以及数据爬取的结果查看,减少了开发人员直接进行代码调试的次数,节约了开发成本。
通过对节点执行器的接口化统一顶层设计以及责任链的组装模式生成的爬虫代码,有效减弱了爬虫代码与网络客体环境之间的耦合性,降低了爬虫代码的维护和升级成本。
示例性地,对于某类产品销售网页的前10页的指定数据的抓取需求,由于规律的URL,采用循环并发数据抓取以提高执行效率,配置文件主要设置为:定义变量节点,设置爬取变量为page;定义循环节点,循环爬取第1~10页的指定数据;相应的定义停止节点,用于等待全部爬取完毕;定义输出到存储介质中的输出节点;并且上述四个功能节点的主要组装规则为变量节点→循环节点→停止节点→输出节点,并生成配置文件,启动调试节点执行器,对配置文件进行调试,得到最终的配置文件。按照最终配置文件,解析编译并通过责任链模式,组装为变量节点执行器→循环节点执行器→停止节点执行器→输出节点执行器,进而得到爬虫代码,以进行数据抓取。
图3是本发明实施例的可视化爬虫工具的数据抓取流程示意图,可视化爬虫工具分为规则配置引擎、解析引擎和执行引擎三大核心引擎,首先规则配置引擎响应于数据爬取请求,在前端的可视化界面进行爬虫规则的配置,生成XML文件,此配置文件中包括各个功能节点的定义和节点之间的组装规则的配置;解析引擎通过后台系统解析XML文件,根据XML配置文件动态生成可执行爬虫代码;执行引擎调度上述可执行爬虫代码,以执行数据抓取,得到数据抓取结果。
图4是根据本发明实施例的数据抓取的装置的主要模块示意图。如图4所示,数据抓取的装置400主要包括配置获取模块401、爬虫代码获取模块402和数据抓取模块403。
配置获取模块401,用于响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;
爬虫代码获取模块402,用于解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;
数据抓取模块403,用于采用所述爬虫代码进行数据抓取,得到数据抓取结果。
具体地,所述配置获取模块401还可以用于:响应于数据抓取请求,根据待抓取页面通过可视化界面定义不少于一个功能节点,所述功能节点包括:变量节点、循环节点、停止节点、抓取节点和输出节点;根据所述功能节点,对所述功能节点之间的组装规则进行配置得到配置文件。
具体地,所述爬虫代码获取模块402还可以用于:基于所述配置文件,通过工厂模式将所述功能节点编译为对应的节点执行器;通过责任链模式,按照所述组装规则将所述功能节点对应的节点执行器组装为爬虫代码。
具体地,若所述功能节点为变量节点,则将所述功能节点编译为变量节点执行器,所述变量节点执行器用于:将变量表达式解析为抽象语法树,结合变量存放容器中的原始变量,动态计算得到所述变量表达式的值,并作为条件变量存入所述变量存放容器,以供后续计算使用。
具体地,若所述功能节点为循环节点,则将所述功能节点编译为循环节点执行器;若所述功能节点为停止节点,则将所述功能节点编译为停止节点执行器;所述循环节点执行器用于指定抓取节点的并发执行,以及和停止节点执行器配合使用实现数据的循环抓取。
具体地,若所述功能节点为抓取节点,则将所述功能节点编译为抓取节点执行器,所述抓取节点执行器在进行页面数据抓取时支持统一资源定位符的去重设置。
具体地,本发明实施例的数据抓取的装置400还包括调试模块(图中未示出),用于在采用所述爬虫代码进行数据抓取之前,根据所述配置文件,编译生成调试节点执行器,用于进行所述功能节点的调试。
图5是本发明实施例可以应用于其中的示例性系统架构图。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如数据抓取应用、爬虫应用等(仅为示例)。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所进行的数据抓取提供支持的后台管理服务器(仅为示例)。后台管理服务器可以响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;采用所述爬虫代码进行数据抓取,得到数据抓取结果等处理,并将处理结果(例如爬虫数据等--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据抓取的方法一般由服务器505执行,相应地,数据抓取的装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统600的结构示意图。图6示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是所述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者所述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或所述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者所述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括:配置获取模块、爬虫代码获取模块和数据抓取模块。
其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据抓取模块还可以被描述为“用于采用所述爬虫代码进行数据抓取,得到数据抓取结果的模块”。
另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是所述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。所述计算机可读介质承载有一个或者多个程序,当所述一个或者多个程序被一个该设备执行时,使得该设备包括:响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;采用所述爬虫代码进行数据抓取,得到数据抓取结果。
根据本发明实施例的技术方案,具有如下优点或有益效果:通过响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对功能节点之间的组装规则进行配置得到配置文件;解析配置文件,根据组装规则对功能节点进行组装,得到爬虫代码;采用爬虫代码进行数据抓取,得到数据抓取结果的技术方案,采用基于使用者灵活建立的配置文件,后台按照配置文件动态生成爬虫代码以进行数据抓取的方法,既实现了前端的无代码灵活配置,又降低了爬虫代码与网络客体环境的耦合性,从而达到了降低数据抓取的开发成本和使用门槛,进而提升开发效率的目的。
所述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种数据抓取的方法,其特征在于,包括:
响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;
解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;
采用所述爬虫代码进行数据抓取,得到数据抓取结果。
2.根据权利要求1所述的方法,其特征在于,响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件,包括:
响应于数据抓取请求,根据待抓取页面通过可视化界面定义不少于一个功能节点,所述功能节点包括:变量节点、循环节点、停止节点、抓取节点和输出节点;
根据所述功能节点,对所述功能节点之间的组装规则进行配置得到配置文件。
3.根据权利要求1或2所述的方法,其特征在于,解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码,包括:
基于所述配置文件,通过工厂模式将所述功能节点编译为对应的节点执行器;
通过责任链模式,按照所述组装规则将所述功能节点对应的节点执行器组装为爬虫代码。
4.根据权利要求3所述的方法,其特征在于,若所述功能节点为变量节点,则将所述功能节点编译为变量节点执行器,所述变量节点执行器用于:
将变量表达式解析为抽象语法树,结合变量存放容器中的原始变量,动态计算得到所述变量表达式的值,并作为条件变量存入所述变量存放容器,以供后续计算使用。
5.根据权利要求3所述的方法,其特征在于,若所述功能节点为循环节点,则将所述功能节点编译为循环节点执行器;若所述功能节点为停止节点,则将所述功能节点编译为停止节点执行器;
所述循环节点执行器用于指定抓取节点的并发执行,以及和停止节点执行器配合使用实现数据的循环抓取。
6.根据权利要求3所述的方法,其特征在于,若所述功能节点为抓取节点,则将所述功能节点编译为抓取节点执行器,所述抓取节点执行器在进行页面数据抓取时支持统一资源定位符的去重设置。
7.根据权利要求1所述的方法,其特征在于,采用所述爬虫代码进行数据抓取之前,还包括:
根据所述配置文件,编译生成调试节点执行器,用于进行所述功能节点的调试。
8.一种数据抓取的装置,其特征在于,包括:
配置获取模块,用于响应于数据抓取请求,根据待抓取页面定义不少于一个功能节点,并对所述功能节点之间的组装规则进行配置得到配置文件;
爬虫代码获取模块,用于解析所述配置文件,根据所述组装规则对所述功能节点进行组装,得到爬虫代码;
数据抓取模块,用于采用所述爬虫代码进行数据抓取,得到数据抓取结果。
9.一种移动电子设备终端,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202210323130.3A 2022-03-30 2022-03-30 一种数据抓取的方法和装置 Pending CN114661976A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210323130.3A CN114661976A (zh) 2022-03-30 2022-03-30 一种数据抓取的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210323130.3A CN114661976A (zh) 2022-03-30 2022-03-30 一种数据抓取的方法和装置

Publications (1)

Publication Number Publication Date
CN114661976A true CN114661976A (zh) 2022-06-24

Family

ID=82032676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210323130.3A Pending CN114661976A (zh) 2022-03-30 2022-03-30 一种数据抓取的方法和装置

Country Status (1)

Country Link
CN (1) CN114661976A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130074055A1 (en) * 2012-11-08 2013-03-21 Concurix Corporation Memoization Configuration File Consumed at Compile Time
CN110287394A (zh) * 2019-06-28 2019-09-27 北京金山安全软件有限公司 网站资源的爬取方法、装置、计算机设备和存储介质
CN110309386A (zh) * 2018-02-28 2019-10-08 腾讯科技(深圳)有限公司 一种网页爬取的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130074055A1 (en) * 2012-11-08 2013-03-21 Concurix Corporation Memoization Configuration File Consumed at Compile Time
CN110309386A (zh) * 2018-02-28 2019-10-08 腾讯科技(深圳)有限公司 一种网页爬取的方法和装置
CN110287394A (zh) * 2019-06-28 2019-09-27 北京金山安全软件有限公司 网站资源的爬取方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN110019350B (zh) 基于配置信息的数据查询方法和装置
AU2017238633B2 (en) Efficient state machines for real-time dataflow programming
US7870482B2 (en) Web browser extension for simplified utilization of web services
CN110865889B (zh) 组件间传递事件的方法和装置
CN113419740B (zh) 程序数据流的分析方法、装置、电子设备及可读存储介质
CN114115904B (zh) 信息处理方法、装置、服务器及存储介质
CN107391528B (zh) 前端组件依赖信息搜索方法及设备
CN110888639A (zh) 一种业务代码编译打包方法和装置
CN113760729A (zh) 一种代码检测方法和装置
CN110716956A (zh) 一种数据请求拦截方法和装置
CN113778725A (zh) 一种数据校验方法和装置
CN112818026A (zh) 数据整合方法和装置
CN117873553A (zh) 版本发布方法、装置、设备和介质
CN116382703B (zh) 软件包生成方法、代码开发方法及装置、电子设备和介质
CN112947941A (zh) 一种添加异常处理代码的方法和装置
CN110851678B (zh) 一种爬取数据的方法和装置
CN109901934B (zh) 生成接口帮助文档的方法和装置
CN115640279A (zh) 一种数据血缘关系的构建方法和装置
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN112346774A (zh) 一种应用安装包的生成方法和装置
CN114661976A (zh) 一种数据抓取的方法和装置
CN112433752B (zh) 页面解析方法、装置、介质及电子设备
CN110858240A (zh) 一种前端模块加载方法和装置
CN113515285B (zh) 生成实时计算逻辑数据的方法和装置
CN113392311A (zh) 字段搜索方法、字段搜索装置、电子设备及存储介质

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