首页 / 数据抽取方法及装置

数据抽取方法及装置无效专利 发明

技术领域

[0001] 本发明实施例涉及计算机技术领域,尤其涉及一种数据抽取方法及装置。

相关背景技术

[0002] 大数据时代,数据的生产达到了空前的速度,数据的来源、种类、组织形式也越来越广泛,这给数据采集系统(爬虫),提出了更高的要求。数据抽取是爬虫系统的重要步骤,其主要作用是从各种各样的原始的格式化或者非格式化数据,例如网页、JavaScript对象表示法(JavaScript Object Notation,简称JSON)、可扩展标记语言(Extensible Markup Language,简称XML)等,抽取出指定内容并将其组织成一定格式以便其它系统使用。在爬虫系统中,爬取到的原始数据是多种多样的,常见的比如超文本标记语言(Hyper Text Markup Language,简称HTML)、JSON等,针对不同的数据类型通常需要采用不同的抽取方法,即使对同一种数据类型通常抽取方法也是不一样的。比如,从HTML网页中抽取正文,不同的网站的HTML结构是不一样的,那么就需要在抽取时针对不同的HTML结构使用不同的抽取规则。
[0003] 在实践中,数据抽取通常有基于模板的抽取、不基于模板的自动抽取以及定制化抽取等几种方式。基于模板的抽取是针对不同数据格式以及数据结构编写不同的抽取模板,数据抽取中通过使用模板中指定的抽取信息,对原始数据进行抽取;不基于模板的抽取是利用机器学习等方法自动训练抽取模型,针对不同的原始数据,其能自动定位需要抽取内容;定制化抽取主要是针对某一中特定的格式,在程序内部编写固定的抽取方法。
[0004] 一般的爬虫系统为了性能考虑,数据抽取步骤通常在一个单独数据抽取模块中实现。而在一个数据采集项目中,通常都需要多个爬虫子系统,才能完成数据采集的需求,比如新闻定向爬虫子系统,电子公告牌系统(Bulletin Board System,简称BBS)定向采集子系统以及非定向网页采集系统等。多套采集爬虫子系统也就意味着有多套数据抽取子模块,而这些子模块系统通常会占用不同的机器物理资源,如果某个子系统负载比较小,那么就会导致其占用的资源不能被有效的利用,而且抽取子系与系统中其它模块通常是紧耦合的,不能有效实现子模块的复用。

具体实施方式

[0018] 图1为本发明实施例提供的数据抽取方法流程图;图2为本发明实施例提供的基于插件的数据抽取子系统的示意图。本发明实施例针对现有技术中多个爬虫子系统中负载比较小的子系统,其占用的资源不能被有效的利用,以及抽取子系与系统中其它模块不能有效实现子模块的复用,提供了数据抽取方法,该方法具体步骤如下:
[0019] 步骤S101、数据抽取插件从数据总线获取数据抽取任务,所述数据总线连接有多个数据抽取插件,每个数据抽取插件用于抽取不同种类的数据。
[0020] 如图2所示的基于插件的数据抽取子系统包括数据总线20和多个数据抽取插件,即数据总线20连接有多个数据抽取插件21-23,具体的,21表示新闻抽取插件、22表示BBS抽取插件、23表示微博抽取插件,且每个数据抽取插件用于抽取不同种类的数据,具体的,新闻抽取插件21用于抽取新闻数据,BBS抽取插件22用于抽取BBS数据,微博抽取插件23用于抽取微博数据,新闻数据、BBS数据、微博数据存在于网页、JSON、XML等。
[0021] 另外,多个数据抽取插件和数据总线部署在同一个操作系统中,属于不同的操作系统进程。数据总线与每个数据抽取插件之间通过超文本传输协议(Hyper Text Transfer Protocol,简称HTTP)进行通信与数据交换,并且支持数据抽取插件更新、删除与增加,以及支持数据抽取插件的热拔插。
[0022] 数据总线负责接收外部设备发送的数据抽取任务,并将数据抽取任务发送给指定的数据抽取插件,或者,数据抽取插件主动从数据总线上获取数据抽取任务。
[0023] 步骤S102、所述数据抽取插件根据所述数据抽取任务抽取数据。
[0024] 例如,新闻抽取插件21从数据总线上获取到数据抽取任务后,从网页、JSON、XML等抽取新闻数据,BBS抽取插件22从数据总线上获取到数据抽取任务后,从网页、JSON、XML等抽取BBS数据,微博抽取插件23从数据总线上获取到数据抽取任务后,从网页、JSON、XML等抽取微博数据。
[0025] 步骤S103、所述数据抽取插件将其抽取到的数据发送给所述数据总线。
[0026] 例如,新闻抽取插件21将其抽取到的新闻数据发送给数据总线,数据总线将新闻数据作为响应发送给外部设备;BBS抽取插件22将其抽取到的BBS数据发送给数据总线,数据总线将BBS数据作为响应发送给外部设备;微博抽取插件23将其抽取到的微博数据发送给数据总线,数据总线将微博数据作为响应发送给外部设备。
[0027] 本发明实施例基于数据抽取插件的数据抽取子系统,将散步在各个爬虫系统的中的抽取子模块插件化,解除与原系统的紧耦合,因此可以方便的对数据抽取模块进行复用;同时,将抽取模块以插件的方式集中管理,能更好的调配机器物理资源,提高物理资源的利用率。
[0028] 在上述实施例的基础上,每个数据抽取插件周期向所述数据总线发送心跳报文,所述心跳报文包括如下至少一种:插件名称、插件版本、抽取数据成功信息、抽取数据失败信息。
[0029] 具体的,数据总线通过每个数据抽取插件周期性发送的心跳报文,判断每个数据抽取插件的存活状态,当数据总线在若干个周期内收不到某个数据抽取插件发送的心跳报文时,调用该数据抽取插件的关闭脚本关闭该数据抽取插件,该数据抽取插件被关闭后,数据总线还可以再次启动该数据抽取插件。若调用该数据抽取插件的关闭脚本无法成功关闭该数据抽取插件,则调用系统的kill命令,强制杀死该数据抽取插件。
[0030] 另外,所述数据抽取插件存放在预设的目录下,不同的数据抽取插件存放在不同的目录下,同一数据抽取插件的不同版本存放在不同的目录下。
[0031] 具体的,在同一数据总线下的数据抽取插件集中放置在本地文件系统中,且每个数据抽取插件符合一定的文件目录规范,具体规范如下:
[0032] 1)数据抽取插件对应有固定名称、版本。
[0033] 2)数据抽取插件对应有启动脚本、关闭脚本,启动脚本用于启动该数据抽取插件,关闭脚本用于关闭该数据抽取插件。
[0034] 3)同一个数据抽取插件的不同版本分开存放,插件名称和插件版本可唯一确定一个数据抽取插件。
[0035] 4)数据抽取插件存放位置,假设存放所有数据抽取插件的库根目录为/repository,则每个数据抽取插件存放的位置为/repository/插件名/插件版本/[0036] 数据抽取插件的启动和关闭过程具体如下:数据总线通过遍历存放所有数据抽取插件的库根目录,获取所有数据抽取插件的名称、版本以及存储位置等信息。数据总线启动后,主动调用数据抽取插件的启动脚本来启动该数据抽取插件,当数据总线退出时,主动调用数据抽取插件的关闭脚本来关闭该数据抽取插件。
[0037] 此外,所述数据总线还用于增加、删除、更新数据抽取插件、周期性获取所述数据抽取插件的物理资源占用率;所述物理资源占用率包括如下至少一种:CPU使用率、内存大小、磁盘占用大小。
[0038] 数据抽取插件的增加、删除、更新、异常处理过程具体如下:
[0039] 1)数据抽取插件的增加
[0040] 添加新的数据抽取插件时,只需将新的数据抽取插件按照上述所述的文件目录规范放到库根目录下指定的路径即可。
[0041] 2)数据抽取插件的删除
[0042] 删除数据抽取插件时,只需将库根目录下指定的路径下的数据抽取插件移除即可。数据总线周期性扫描整个库根目录,通过对比上一次扫描结果即可得出哪些数据抽取插件被删除或者增加。
[0043] 3)数据抽取插件的更新
[0044] 在数据抽取插件的目录下面创建upgrade目录,并将所有需要升级的文件放到该目录里,数据总线检测到该目录后,将停止已经启动的该数据抽取插件,将升级文件替换,然后启动该数据抽取插件。
[0045] 4)数据抽取插件的异常处理
[0046] 数据总线通过每个数据抽取插件周期性发送的心跳报文,判断每个数据抽取插件的存活状态,当数据总线在若干个周期内收不到某个数据抽取插件发送的心跳报文时,调用该数据抽取插件的关闭脚本关闭该数据抽取插件,该数据抽取插件被关闭后,数据总线还可以再次启动该数据抽取插件。若调用该数据抽取插件的关闭脚本无法成功关闭该数据抽取插件,则调用系统的kill命令,强制杀死该数据抽取插件。
[0047] 数据总线周期性采集数据抽取插件的物理资源占用率,物理资源占用率包括如下至少一种:CPU使用率、内存大小、磁盘占用大小,当某一数据抽取插件的物理资源占用率超出了数据总线对该数据抽取插件的最大限制时,数据总线强制关闭该数据抽取插件,并发出报警信息,该数据抽取插件被关闭后,数据总线还可以再次启动该数据抽取插件。此外,数据总线对不同数据抽取插件的最大限制可以不同。
[0048] 本实施例中,数据总线与各个数据抽取插件相互独立,属于不同的操作系统进程。数据总线控制数据抽取插件的启动、升级、重启,资源占用统计以及其它必要的插件监控功能。由于各个数据抽取插件均为独立的系统进程,因此其运行状态互不影响,数据总线控制每个数据抽取插件最多占用的系统资源,保证不会因某个数据抽取插件异常占用过多的系统资源而导致整个子系统性能降低或者不可用。
[0049] 图3为本发明实施例提供的数据抽取装置的结构图。本发明实施例提供的数据抽取装置可以执行数据抽取方法实施例提供的处理流程,如图3所示,数据抽取装置30包括获取模块31、抽取模块32、发送模块33,其中,获取模块31用于从数据总线获取数据抽取任务,所述数据总线连接有多个数据抽取插件,每个数据抽取插件用于抽取不同种类的数据;抽取模块32用于根据所述数据抽取任务抽取数据;发送模块33用于将其抽取到的数据发送给所述数据总线。
[0050] 本发明实施例基于数据抽取插件的数据抽取子系统,将散步在各个爬虫系统的中的抽取子模块插件化,解除与原系统的紧耦合,因此可以方便的对数据抽取模块进行复用;同时,将抽取模块以插件的方式集中管理,能更好的调配机器物理资源,提高物理资源的利用率。
[0051] 在上述实施例的基础上,发送模块33还用于周期向所述数据总线发送心跳报文,所述心跳报文包括如下至少一种:
[0052] 插件名称、插件版本、抽取数据成功信息、抽取数据失败信息;
[0053] 所述数据总线用于根据所述心跳报文,判断所述数据抽取插件的存活状态,若所述数据总线在预设时间内收不到所述数据抽取插件的心跳报文,则关闭所述数据抽取插件。
[0054] 另外,所述数据抽取插件和所述数据总线通过超文本传输协议HTTP协议进行通信。
[0055] 所述数据抽取插件存放在预设的目录下,不同的数据抽取插件存放在不同的目录下,同一数据抽取插件的不同版本存放在不同的目录下。
[0056] 此外,所述数据总线还用于增加、删除、更新数据抽取插件、周期性获取所述数据抽取插件的物理资源占用率;
[0057] 所述物理资源占用率包括如下至少一种:
[0058] CPU使用率、内存大小、磁盘占用大小。
[0059] 本发明实施例提供的数据抽取装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
[0060] 本实施例中,数据总线与各个数据抽取插件相互独立,属于不同的操作系统进程。数据总线控制数据抽取插件的启动、升级、重启,资源占用统计以及其它必要的插件监控功能。由于各个数据抽取插件均为独立的系统进程,因此其运行状态互不影响,数据总线控制每个数据抽取插件最多占用的系统资源,保证不会因某个数据抽取插件异常占用过多的系统资源而导致整个子系统性能降低或者不可用。
[0061] 综上所述,本发明实施例基于数据抽取插件的数据抽取子系统,将散步在各个爬虫系统的中的抽取子模块插件化,解除与原系统的紧耦合,因此可以方便的对数据抽取模块进行复用;同时,将抽取模块以插件的方式集中管理,能更好的调配机器物理资源,提高物理资源的利用率;数据总线与各个数据抽取插件相互独立,属于不同的操作系统进程。数据总线控制数据抽取插件的启动、升级、重启,资源占用统计以及其它必要的插件监控功能。由于各个数据抽取插件均为独立的系统进程,因此其运行状态互不影响,数据总线控制每个数据抽取插件最多占用的系统资源,保证不会因某个数据抽取插件异常占用过多的系统资源而导致整个子系统性能降低或者不可用。
[0062] 在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0063] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0064] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0065] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0066] 本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0067] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页 第1页 第2页 第3页