CN110851678A - 一种爬取数据的方法和装置 - Google Patents

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

Info

Publication number
CN110851678A
CN110851678A CN201810818727.9A CN201810818727A CN110851678A CN 110851678 A CN110851678 A CN 110851678A CN 201810818727 A CN201810818727 A CN 201810818727A CN 110851678 A CN110851678 A CN 110851678A
Authority
CN
China
Prior art keywords
data
webpage
analyzed
syntax tree
queue
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
CN201810818727.9A
Other languages
English (en)
Other versions
CN110851678B (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 Jingdong Financial Technology Holding Co Ltd
Original Assignee
Beijing Jingdong Financial 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 Beijing Jingdong Financial Technology Holding Co Ltd filed Critical Beijing Jingdong Financial Technology Holding Co Ltd
Priority to CN201810818727.9A priority Critical patent/CN110851678B/zh
Publication of CN110851678A publication Critical patent/CN110851678A/zh
Application granted granted Critical
Publication of CN110851678B publication Critical patent/CN110851678B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种爬取数据的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。该实施方式能够解决编码难度大、编码工作量大的问题。

Description

一种爬取数据的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种爬取数据的方法和装置。
背景技术
目前,信息采集的方法主要有以下两种:
(1)搜索引擎类信息采集:像谷歌、百度等搜索平台能够全网采集互联网上的开放信息,具有采集数据范围广、更新频率快、采集数据量大的优点,但是采集的信息多为模糊信息。
(2)精确爬取类信息采集:此类信息采集可以通过两种方法:
a、需要针对每类页面来定制编码抓取,优点是数据采集灵活,抓取信息比较精准,抓取方向可控;
b、通过配置的方式实现多个领域的网页抓取和信息抽取。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
(1)传统的搜索引擎搜索意图不明,结果精确度不高,数据非结构化,难以提供准确而干净的数据;
(2)精确爬取类信息采集的缺点是:
a、每类页面都要进行编码,工作量大,代码维护复杂、困难,并且抓取速度受单台机器性能的限制;
b、现有通过配置的方式进行爬取的方法,需先加载页面内容,并将页面内所有内容下载后再实施爬取,当需要爬取多个网页时会占用大量资源,导致爬取速度过慢;
(3)现有平台配置类爬虫需要熟悉爬虫平台的配置规则及配置语法,配置人员需要大量的培训时间和培训成本。
发明内容
有鉴于此,本发明实施例提供一种爬取数据的方法和装置,能够解决编码难度大、编码工作量大的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种爬取数据的方法,包括:
将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;
从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;
从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
可选地,从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据,包括:
从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;
从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中。
可选地,从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据,包括:
从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;
根据所述解析规则解析所述待解析数据,将解析后的网页数据发送到结果队列中;
从所述结果队列中获取解析后的网页数据,并保存所述解析后的网页数据。
可选地,从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据,还包括:
若所述解析后的网页数据为子级网页地址,则将所述子级网页地址发送到待下载队列中。
可选地,将结构化查询语句转换成语法树,包括:
对结构化查询语句进行词法分析,将所述结构化查询语句拆分为语法关键字和函数;
对所述语法关键字和函数进行语法分析,从而生成语法树。
另外,根据本发明实施例的另一个方面,提供了一种爬取数据的装置,包括:
转换模块,用于将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;
下载模块,用于从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;
解析模块,用于从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
可选地,所述下载模块用于:
从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;
从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中。
可选地,所述解析模块用于:
从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;
根据所述解析规则解析所述待解析数据,将解析后的网页数据发送到结果队列中;
从所述结果队列中获取解析后的网页数据,并保存所述解析后的网页数据。
可选地,所述解析模块还用于:
若所述解析后的网页数据为子级网页地址,则将所述子级网页地址发送到待下载队列中。
可选地,所述转换模块用于:
对结构化查询语句进行词法分析,将所述结构化查询语句拆分为语法关键字和函数;
对所述语法关键字和函数进行语法分析,从而生成语法树。
根据本发明实施例的另一个方面,还提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用将结构化查询语句转换成语法树,根据起始网页地址下载网页数据,并根据解析规则解析网页数据的技术手段,所以克服了编码难度大、编码工作量大的技术问题;本发明将结构化查询语句转换成语法树,并根据语法树中的起始网页地址和解析规则爬取网页数据,与传统爬虫相比,本发明实施例提供可以被熟悉SQL的数据分析人员使用,而且完全兼容SQL标准语法,可以实现零成本接入爬虫。本发明实施例可以运行在SPARK上成为原生的分布式环境,也可以运行在JVM上实现多实例运行,或者配合Redis或者消息队列实现多实例分布式爬取,从而显著提高爬取速度。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的爬取数据的方法的主要流程的示意图;
图2是根据本发明一个可参考实施例的爬取数据的方法的主要流程的示意图;
图3是根据本发明实施例的爬取数据的装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性***架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的爬取数据的方法的主要流程的示意图。如图1所示,作为本发明的一个实施例,所述爬取数据的方法可以包括:
步骤101,将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则。
在该步骤中,将结构化查询语句(简称SQL语句)转换为语法树,所述语法树包括起始网页地址和解析规则,以便于后续步骤可以根据起始网页地址和解析规则进行网页数据的下载和解析。
作为本发明的又一个实施例,将结构化查询语句转换成语法树,包括:对结构化查询语句进行词法分析,将所述结构化查询语句拆分为语法关键字和函数;对所述语法关键字和函数进行语法分析,从而生成语法树。在该实施例中,先对结构化查询语句进行词法分析,将SQL语句中的字符聚集为单词或者词法符号(token),从而将SQL语句拆分为语法关键词和函数;然后对所述语法关键词和函数进行语法分析,在这个过程中,词法符号被消费,以识别SQL语句结构,从而创建得到语法树(parse tree)。
可选地,可以通过SQL解析器将SQL语句翻译成语法树,所述语法树包括起始URL(统一资源定位符)和解析规则。比如可以采用antlr4框架配置语法,从而实现SQL语句的解析以及语法树的生成。ANTLR(Another Tool for Language Recognition)是一个通过语法描述来自动构造自定义语言的识别器、编译器和解释器的框架。在本发明的实施例中,SQL解析器是通过JAVA(一门面向对象编程语言)开发,因此所述SQL解析器可以无缝地运行在支持JAVA环境的任何平台上,比如SPARK(专为大规模数据处理而设计的快速通用的计算引擎)、JVM(Java Virtual Machine,Java虚拟机)或者STORM(一个免费开源、分布式、高容错的实时计算***)。
SQL解析器对爬虫领域定制了特殊的语法关键字,这些语法关键字在where关键字之后,例如:
source.type表示:源待爬取队列类型;
source.url表示:源待爬取队列地址;
source.topic表示:源待爬取队列主题;
target.type表示:目标输出队列类型;
target.url表示:目标输出队列地址;
target.topic表示:目标输出队列主题;
SQL解析器还提供了爬取过程中解析网页数据的函数,例如:
JSONP表示:使用JSON方式解析网页数据;
XPATH表示:使用XPATH方式解析网页数据;
URL_XPATH表示:使用XPATH方式提取页面数据中的网页地址,将所述网页地址发送到待下载队列中。
所述SQL解析器可以运行在SPARK、JVM或者STORM上,灵活兼容大多数环境,提供原生的分布式爬取能力,显著地提高了爬取速度。
步骤102,从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据。
在该步骤中,根据从所述语法树中获取的起始URL地址,下载网页数据。作为本发明的再一个实施例,从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据,包括:从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中。在该实施例中,将起始URL地址存储到待下载队列中,然后消费待下载队列,根据从所述语法树中获取的起始URL地址执行下载任务,将下载的HTML(超文本标记语言)网页数据存储到待解析数据队列中。
可选地,所述待下载队列可以是待下载流式队列,比如Kafka。而且,所述待解析数据队列也可以是待解析数据流式队列,比如Kafka。Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息***,它可以处理消费者规模的网站中的所有动作流数据。因此,在步骤102中,启动流式数据,消费待下载流式队列,并根据从所述语法树中获取的起始URL地址执行下载任务,然后将下载的HTML网页数据发送到待解析数据流式队列中。由于网页数据下载下来以后发送到流式队列kafka里,然后再进行消费流式队列kafka,因此,这样的异步架构不会在实例中消耗很多资源,可以加快爬取速度。
步骤103,从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
可选地,步骤103可以具体包括:首先,从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;然后,根据所述解析规则解析所述待解析数据,将解析后的网页数据发送到结果队列中;最后,从所述结果队列中获取解析后的网页数据,并保存所述解析后的网页数据。在该实施例中,首先,消费待解析数据流式队列,从待解析数据流式队列中获取下载后的HTML网页数据(即待解析数据),并根据语法树中的解析规则解析HTML网页数据,然后将解析后的HTML网页数据存储到结果流式队列中(比如Kafka),最后消费结果流式队列,从结果流式队列中获取解析后的HTML网页数据,并保存所述解析后的HTML网页数据。
作为本发明的再一个实施例,步骤103还可以包括:若所述解析后的网页数据为子级网页地址,则将所述子级网页地址发送到待下载队列中。在本发明的实施例中,根据语法树中的解析规则解析HTML网页数据后的内容分为两种情况:如果解析后的网页数据是子级网页地址,则将所述子级网页地址发送到待下载流式队列中;如果解析后的网页数据不是子级网页地址,则将所述解析后的网页数据发送到结果流式队列中。
可选地,SQL解析器以函数的形式提供JSOUP和XPATH两种方式解析。JSOUP函数是封装了JSOUP API的自定义函数,该函数提供可通过DOM(文档对象模型)、CSS(层叠样式表)以及类似于jQuery的操作方法来取出和操作数据的功能。XPATH函数封装了XPATH表达式,XPATH使用路径表达式来选取XML文档中的节点或者节点集。路径表达式是从一个XML节点(当前的上下文节点)到另一个节点或一组节点的书面步骤顺序。JSOUP是一款JAVA的HTML解析器,可直接解析某个URL地址、HTML文本内容。XPATH即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。
实例如下:
select
xpath(html,”//body//div//span//[@class=’title’]”)as title,//使用XPATH函数解析title字段
jsoup(html,”#conten”)as content,//使用JSOUP函数解析content字段
url_xprth(html,”//body//div//span//[@class=’url’]”)as url//使用URL_XPATH函数解析子级URL,同时发送到source.url队列中
from
htmlurl//起始URL
where
source.type=kafka//待下载队列的类型,默认KAFKA
and
source.url=192.169.0.1:6161//待下载队列的地址
and
source.topic=source_url//待下载队列的主题
and
target.type=kafka//待解析数据队列的类型
and
target.url=192.168.0.1//待解析数据队列的地址
and
target.topic=target_dim//待解析数据队列的主题
可见,本发明实施例在现有爬虫平台的配置规则基础上抽象出可以根据指定的URL和解析规则进行爬取的标准SQL语法,该SQL语法可支持类似HIVE(数据仓库工具)的用户自定义函数。
根据上面所述的各种实施例,可以看出本发明采用将结构化查询语句转换成语法树,根据起始网页地址下载网页数据,并根据解析规则解析网页数据的技术方案,解决了编码难度大、编码工作量大的问题。也就是说,在现有技术中,每类页面都要进行编码,工作量大,代码维护复杂、困难,并且抓取速度受单台机器性能的限制,当需要爬取多个网页时会占用大量资源,导致爬取速度过慢。而本发明将结构化查询语句转换成语法树,并根据语法树中的起始网页地址和解析规则爬取网页数据,与传统爬虫相比,本发明实施例提供的方法可以被熟悉SQL的数据分析人员使用,而且完全兼容SQL标准语法,可以实现零成本接入爬虫。本发明实施例可以运行在SPARK上成为原生的分布式环境,也可以运行在JVM上实现多实例运行,或者配合Redis或者消息队列实现多实例分布式爬取,从而显著提高爬取速度。
图2是根据本发明一个可参考实施例的爬取数据的方法的主要流程的示意图,所述爬取数据的方法可以包括:
步骤201,将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;
步骤202,从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;
步骤203,从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中;
步骤204,从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;
步骤205,根据所述解析规则解析所述待解析数据,判断解析后的网页数据是否为子级网页地址,若是,则执行步骤206;若否,则执行步骤207;
步骤206,将所述子级网页地址发送到待下载队列中;
步骤207,将解析后的网页数据发送到结果队列中;
步骤208,从所述结果队列中获取解析后的网页数据;
步骤209,保存所述解析后的网页数据。
另外,在本发明一个可参考实施例中爬取数据的方法的具体实施内容,在上面所述爬取数据的方法中已经详细说明了,故在此重复内容不再说明。
图3是根据本发明实施例的爬取数据的装置的主要模块的示意图。如图3所示,所述爬取数据的装置300包括转换模块301、下载模块302和解析模块303。其中,所述转换模块301将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;所述下载模块302从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;所述解析模块303从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
可选地,所述下载模块302从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中。
可选地,所述解析模块303从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;根据所述解析规则解析所述待解析数据,将解析后的网页数据发送到结果队列中;从所述结果队列中获取解析后的网页数据,并保存所述解析后的网页数据。
可选地,若所述解析后的网页数据为子级网页地址,则所述解析模块303还将所述子级网页地址发送到待下载队列中。
可选地,所述转换模块301对结构化查询语句进行词法分析,将所述结构化查询语句拆分为语法关键字和函数;对所述语法关键字和函数进行语法分析,从而生成语法树。
根据上面所述的各种实施例,可以看出本发明采用将结构化查询语句转换成语法树,根据起始网页地址下载网页数据,并根据解析规则解析网页数据的技术方案,解决了编码难度大、编码工作量大的问题。也就是说,在现有技术中,每类页面都要进行编码,工作量大,代码维护复杂、困难,并且抓取速度受单台机器性能的限制,当需要爬取多个网页时会占用大量资源,导致爬取速度过慢。而本发明将结构化查询语句转换成语法树,并根据语法树中的起始网页地址和解析规则爬取网页数据,与传统爬虫相比,本发明实施例提供的装置可以被熟悉SQL的数据分析人员使用,而且完全兼容SQL标准语法,可以实现零成本接入爬虫。本发明实施例可以运行在SPARK上成为原生的分布式环境,也可以运行在JVM上实现多实例运行,或者配合Redis或者消息队列实现多实例分布式爬取,从而显著提高爬取速度。
需要说明的是,在本发明所述爬取数据的装置的具体实施内容,在上面所述爬取数据的方法中已经详细说明了,故在此重复内容不再说明。
图4示出了可以应用本发明实施例的爬取数据的方法或爬取数据的方法的示例性***架构400。
如图4所示,***架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息——仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的爬取数据的方法一般在服务器405执行,相应地,所述爬取数据的装置一般设置在服务器405中。本发明实施例所提供的爬取数据的方法也可以在终端设备401、402、403执行,相应地,所述爬取数据的装置一般设置在终端设备401、402、403上。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机***500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括转换模块、下载模块和解析模块,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
根据本发明实施例的技术方案,因为采用将结构化查询语句转换成语法树,根据起始网页地址下载网页数据,并根据解析规则解析网页数据的技术手段,所以克服了编码难度大、编码工作量大的技术问题;本发明将结构化查询语句转换成语法树,并根据语法树中的起始网页地址和解析规则爬取网页数据,与传统爬虫相比,本发明实施例可以被熟悉SQL的数据分析人员使用,而且完全兼容SQL标准语法,可以实现零成本接入爬虫。本发明实施例可以运行在SPARK上成为原生的分布式环境,也可以运行在JVM上实现多实例运行,或者配合Redis或者消息队列实现多实例分布式爬取,从而显著提高爬取速度。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种爬取数据的方法,其特征在于,包括:
将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;
从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;
从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
2.根据权利要求1所述的方法,其特征在于,从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据,包括:
从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;
从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中。
3.根据权利要求2所述的方法,其特征在于,从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据,包括:
从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;
根据所述解析规则解析所述待解析数据,将解析后的网页数据发送到结果队列中;
从所述结果队列中获取解析后的网页数据,并保存所述解析后的网页数据。
4.根据权利要求3所述的方法,其特征在于,从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据,还包括:
若所述解析后的网页数据为子级网页地址,则将所述子级网页地址发送到待下载队列中。
5.根据权利要求1所述的方法,其特征在于,将结构化查询语句转换成语法树,包括:
对结构化查询语句进行词法分析,将所述结构化查询语句拆分为语法关键字和函数;
对所述语法关键字和函数进行语法分析,从而生成语法树。
6.一种爬取数据的装置,其特征在于,包括:
转换模块,用于将结构化查询语句转换成语法树,所述语法树包括起始网页地址和解析规则;
下载模块,用于从所述语法树中获取起始网页地址,根据所述起始网页地址下载网页数据;
解析模块,用于从所述语法树中获取解析规则,根据所述解析规则解析所述网页数据,保存解析后的网页数据。
7.根据权利要求6所述的装置,其特征在于,所述下载模块用于:
从所述语法树中获取起始网页地址,将所述起始网页地址发送到待下载队列中;
从所述待下载队列中获取初始网页地址,根据所述初始网页地址下载网页数据,并将下载的网页数据发送到待解析数据队列中。
8.根据权利要求7所述的装置,其特征在于,所述解析模块用于:
从所述语法树中获取解析规则,以及从所述待解析数据队列中获取待解析数据;
根据所述解析规则解析所述待解析数据,将解析后的网页数据发送到结果队列中;
从所述结果队列中获取解析后的网页数据,并保存所述解析后的网页数据。
9.根据权利要求8所述的装置,其特征在于,所述解析模块还用于:
若所述解析后的网页数据为子级网页地址,则将所述子级网页地址发送到待下载队列中。
10.根据权利要求6所述的装置,其特征在于,所述转换模块用于:
对结构化查询语句进行词法分析,将所述结构化查询语句拆分为语法关键字和函数;
对所述语法关键字和函数进行语法分析,从而生成语法树。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201810818727.9A 2018-07-24 2018-07-24 一种爬取数据的方法和装置 Active CN110851678B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810818727.9A CN110851678B (zh) 2018-07-24 2018-07-24 一种爬取数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810818727.9A CN110851678B (zh) 2018-07-24 2018-07-24 一种爬取数据的方法和装置

Publications (2)

Publication Number Publication Date
CN110851678A true CN110851678A (zh) 2020-02-28
CN110851678B CN110851678B (zh) 2024-02-02

Family

ID=69594418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810818727.9A Active CN110851678B (zh) 2018-07-24 2018-07-24 一种爬取数据的方法和装置

Country Status (1)

Country Link
CN (1) CN110851678B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414523A (zh) * 2020-03-11 2020-07-14 中国建设银行股份有限公司 一种数据获取方法和装置
KR20210040850A (ko) * 2020-04-03 2021-04-14 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 문서 분석 방법, 장치, 기기 및 저장 매체

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050022115A1 (en) * 2001-05-31 2005-01-27 Roberts Baumgartner Visual and interactive wrapper generation, automated information extraction from web pages, and translation into xml
US20080098300A1 (en) * 2006-10-24 2008-04-24 Brilliant Shopper, Inc. Method and system for extracting information from web pages
CN101520796A (zh) * 2009-02-16 2009-09-02 深圳市腾讯计算机***有限公司 从网页内容中提取统一资源定位符的方法及***
US8359305B1 (en) * 2011-10-18 2013-01-22 International Business Machines Corporation Query metadata engine
US20150301811A1 (en) * 2013-01-23 2015-10-22 Tencent Technology (Shenzhen) Company Limited Method and apparatus for testing browser compatibility
CN106055619A (zh) * 2016-05-26 2016-10-26 达而观信息科技(上海)有限公司 一种基于动态的网页抓取方法及装置
CN107025296A (zh) * 2017-04-17 2017-08-08 山东辰华科技信息有限公司 基于科技服务信息智能抓取***数据收集方法
CN107273504A (zh) * 2017-06-19 2017-10-20 浪潮软件集团有限公司 一种基于Kudu的数据查询方法和装置
CN107885777A (zh) * 2017-10-11 2018-04-06 北京智慧星光信息技术有限公司 一种基于协作式爬虫的抓取网页数据的控制方法及***

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050022115A1 (en) * 2001-05-31 2005-01-27 Roberts Baumgartner Visual and interactive wrapper generation, automated information extraction from web pages, and translation into xml
US20080098300A1 (en) * 2006-10-24 2008-04-24 Brilliant Shopper, Inc. Method and system for extracting information from web pages
CN101520796A (zh) * 2009-02-16 2009-09-02 深圳市腾讯计算机***有限公司 从网页内容中提取统一资源定位符的方法及***
US8359305B1 (en) * 2011-10-18 2013-01-22 International Business Machines Corporation Query metadata engine
US20150301811A1 (en) * 2013-01-23 2015-10-22 Tencent Technology (Shenzhen) Company Limited Method and apparatus for testing browser compatibility
CN106055619A (zh) * 2016-05-26 2016-10-26 达而观信息科技(上海)有限公司 一种基于动态的网页抓取方法及装置
CN107025296A (zh) * 2017-04-17 2017-08-08 山东辰华科技信息有限公司 基于科技服务信息智能抓取***数据收集方法
CN107273504A (zh) * 2017-06-19 2017-10-20 浪潮软件集团有限公司 一种基于Kudu的数据查询方法和装置
CN107885777A (zh) * 2017-10-11 2018-04-06 北京智慧星光信息技术有限公司 一种基于协作式爬虫的抓取网页数据的控制方法及***

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414523A (zh) * 2020-03-11 2020-07-14 中国建设银行股份有限公司 一种数据获取方法和装置
KR20210040850A (ko) * 2020-04-03 2021-04-14 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 문서 분석 방법, 장치, 기기 및 저장 매체
JP2021120862A (ja) * 2020-04-03 2021-08-19 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド ドキュメント解析方法、装置、機器及び記憶媒体
JP7206313B2 (ja) 2020-04-03 2023-01-17 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド ドキュメント解析方法、装置、機器及び記憶媒体
KR102674648B1 (ko) 2020-04-03 2024-06-12 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 문서 분석 방법, 장치, 기기 및 저장 매체

Also Published As

Publication number Publication date
CN110851678B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
US11226795B2 (en) Efficient state machines for real-time dataflow programming
JP6922538B2 (ja) Api学習
CN110019350B (zh) 基于配置信息的数据查询方法和装置
CN109522018B (zh) 页面处理方法、装置及存储介质
US10346501B2 (en) Mobile enablement of existing web sites
CN111045678A (zh) 页面执行动态代码的方法、装置、设备及存储介质
CN109144567B (zh) 跨平台的网页渲染方法、装置、服务器及存储介质
CN109783562B (zh) 一种业务处理方法和装置
US20130232424A1 (en) User operation detection system and user operation detection method
JP2020126641A (ja) Apiマッシュアップ探査及びリコメンデーション
CN110851678B (zh) 一种爬取数据的方法和装置
US10558631B2 (en) Enhancing textual searches with executables
CN112818026A (zh) 数据整合方法和装置
KR20120122959A (ko) 웹 컨텐츠 수집방법 및 수집장치, 그 기록매체
JP6763433B2 (ja) 情報収集システム、情報収集方法、及び、プログラム
CN113656737A (zh) 网页内容展示方法、装置、电子设备以及存储介质
CN113419740A (zh) 程序数据流的分析方法、装置、电子设备及可读存储介质
CN112433752B (zh) 页面解析方法、装置、介质及电子设备
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN113032586B (zh) 对文本中的时间信息进行提取的方法、装置及电子设备
Li et al. A fast big data collection system using MapReduce framework
CN108470047B (zh) 基于物联网的远程平台监测***
CN113312053A (zh) 一种数据处理的方法和装置
CN112527290A (zh) 基于生物特征信息搭建页面的方法和装置
CN113515285A (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
CB02 Change of applicant information

Address after: 101111 Room 221, 2nd Floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: 101111 Room 221, 2nd Floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone

Applicant before: Jingdong Digital Technology Holding Co.,Ltd.

Address after: 101111 Room 221, 2nd Floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone

Applicant after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: 101111 Room 221, 2nd Floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone

Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address after: 101111 Room 221, 2nd Floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone

Applicant after: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address before: 101111 Room 221, 2nd Floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone

Applicant before: BEIJING JINGDONG FINANCIAL TECHNOLOGY HOLDING Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant