一种爬取网页内容的方法和装置与流程

文档序号:16693435发布日期:2019-01-22 19:11阅读:325来源:国知局
一种爬取网页内容的方法和装置与流程

本发明的实施方式涉及数据挖掘技术领域,更具体地,本发明的实施方式涉及一种爬取网页内容的方法、一种爬取网页内容的装置、一种设备以及一种计算机可读存储介质。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

网页爬虫(又称“网络蜘蛛”等)是一种计算机程序,用于向服务器发起http请求,从而获得服务器的网页并解析网页,得到所需要的信息。

按照对页面流是否预先定义来划分,网页爬虫可以分为两类:定向爬虫和非定向爬虫。定向爬虫爬取某些特定网站的几个特定页面,并且根据某种业务模型来提取结构化的信息,譬如爬取各城市之间的航班及运价信息。非定向爬虫从网站的几个种子链接出发,先爬取种子页面,之后提取种子页面内所有的超链接,继而爬取新得到的超链接,如此循环,直到所有页面爬取完毕或者到达指定的链接深度为止。百度、谷歌等搜索引擎的爬虫就是典型的非定向爬虫。

相对非定向爬虫需要爬取整个网站甚至全网的页面,定向爬虫爬取的页面要少得多,但要求很高的实时性、信息提取精确无误、有时需要与用户交互获取用户的授权、快速对网站的变动做相应的调整。

现有的开源爬虫框架有很多,譬如nutch、crawler4j、webmagic、webcollector、scrapy等,这些框架针对非定向爬虫而设计,解决了线程调度和页面下载和链接遍历的问题,将爬取到的页面存到hadoop集群或者本地文件系统。

然而对于有定向爬虫需求的公司,往往需要自行开发相应的技术系统。这些技术系统针对每一个网站编写一套计算机程序来下载和解析对应的网页。由于这些爬虫技术系统通过特定编程语言(例如java、c++、python等等)编写代码实现,因而具有如下重大缺点:其一,对爬虫技术系统进行升级、扩展和调整等维护时需要停机、重新发布代码,即不能实现热部署;其二,请求页面的参数构建、信息提取、页面控制流等程序代码揉在一起,程序代码由于编程语言差异、编程风格差异等因素,不直观、不易理解和不好维护。



技术实现要素:

为有效解决因代码发布等维护原因需要重启系统的问题,实现热部署能力,本发明的实施方式期望提供一种爬取网页内容的方法、一种爬取网页内容的装置、一种设备以及一种计算机可读存储介质,使得爬虫技术系统具备热部署能力,在对爬虫技术系统进行升级、拓展和调整等维护时不需要重启服务,大大提高系统的可用性。

在本发明实施方式的第一方面中,提供了一种爬取网页内容的方法,包括:根据任务参数调用相应的页面流配置;根据所述页面流配置下载目标页面;根据页面配置提取目标页面中的结构化信息。

在本发明的一个实施例中,所述页面配置存在于页面流配置下。

在本发明的另一实施例中,所述页面流配置存在于配置规则库中。

在本发明的又一个实施例中,所述配置规则库包含自定义函数配置。

在本发明的再一个实施例中,所述自定义函数配置、页面流配置、页面配置的数据格式是xml格式、yml格式以及json格式中的任意一种或者多种。

在本发明的再一个实施例中,还包括:在根据页面配置提取目标页面中的结构化信息后,将所述结构化信息持久化。

在本发明的再一个实施例中,所述持久化是指将结构化信息置于数据库、缓存以及文件系统中的任意一种或者多种。

在本发明实施方式的第二方面中,提供了一种爬取网页内容的装置,包括:匹配模块,用于根据任务参数调用相应的页面流配置;下载模块,用于根据所述页面流配置下载目标页面;提取模块,用于根据页面配置提取目标页面中的结构化信息。

在本发明的一个实施例中,所述页面配置存在于页面流配置下。

在本发明的另一实施例中,所述页面流配置存在于配置规则库中。

在本发明的又一个实施例中,所述配置规则库包含自定义函数配置。

在本发明的再一个实施例中,所述自定义函数配置、页面流配置、页面配置的数据格式是xml格式、yml格式以及json格式中的任意一种或者多种。

在本发明的再一个实施例中,还包括:持久模块,用于在根据页面配置提取目标页面中的结构化信息后,将所述结构化信息持久化。

在本发明的再一个实施例中,还包括:所述持久化是指将结构化信息置于数据库、缓存以及文件系统中的任意一种或者多种。

在本发明实施方式的第三方面中,提供了一种设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现如前文所述的任意一项方法。

在本发明实施方式的第四方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,能够实现如前文所述的任意一项方法。

根据本发明实施方式的一种爬取网页内容的方法、一种爬取网页内容的装置、一种设备以及一种计算机可读存储介质,有效解决了因代码发布等维护原因需要系统重启的问题,实现了热部署能力。

此外,相比于通过程序代码实现的爬虫,本发明基于配置文件实现的爬虫技术方案具有标准化、简洁、直观、便于理解的优点。懂得xml、json和yml文件的人即可完成爬虫的开发和维护工作,从而不再对编程语言有强依赖,降低了爬虫技术门槛。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示意性地示出了根据本发明一实施方式的一种爬取网页内容的方法的流程图;

图2示意性地示出了根据本发明一实施方式的一种爬取网页内容的装置的结构示意图;

图3示意性地示出了根据本发明一实施方式的一种设备的结构示意图;以及

图4示意性地示出了根据本发明一实施方式的一种计算机可读存储介质的示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品等。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本发明的实施方式,提出了一种爬取网页内容的方法、一种爬取网页内容的装置、一种设备以及一种计算机可读存储介质。

需要理解的是,所谓热部署就是在应用、系统等正在运行的时候升级软件、系统等,却不需要重新启动该软件、系统等。这一理解与本领域技术人员的通常理解是一致的,在本文中并没有特殊的含义。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

发明概述

本发明人发现,本领域爬取网页内容的爬虫技术方案由特定编程语言(例如java、c++、python等等)编写代码实现,其具有如下重大缺点:其一,对爬虫技术系统进行升级、扩展和调整等维护时需要停机、重新发布代码,即不能实现热部署;其二,请求页面的参数构建、信息提取、页面控制流等程序代码揉在一起,程序代码由于编程语言差异、编程风格差异等因素,不直观、不易理解和不好维护。

本发明给出的技术方案通过通用标准格式(例如xml、json、yml等格式)的配置文件来描述爬虫逻辑、通过爬虫引擎解析执行配置文件来完成爬取任务的方式有效解决了因代码发布等维护原因需要系统重启的问题,实现了爬虫技术方案的热部署能力。此外,相比于通过程序代码实现的爬虫,本发明爬虫技术方案具有标准化、简洁、直观、便于理解的优点。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

应用场景总览

根据本发明实施方式,可以实现本发明的应用场景包括数据挖掘这一大的场景,更具体地,本发明的应用场景是爬取网页内容。

示例性方法

下面参考图1来描述根据本发明示例性实施方式的一种爬取网页内容的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。

图1示意性地示出了根据本发明一实施例的一种爬取网页内容的方法的流程图。该方法通常需要借助计算机、智能终端等类似设备实现。具体地,该爬取网页内容的方法可以包括:

s110,根据任务参数调用相应的页面流配置。

通常,在执行爬取网页内容任务时,调用端会将任务提交给任务执行器。在系统内部,任务是以参数的形式表达的,不同的任务具有不同的任务参数,比如爬取“火车票信息”和爬取“酒店信息”就具有不同的任务参数,因为根据业务实践,两者的数据呈现结构不尽相同。爬取不同数据结构的信息自然需要不同的方式,表现在本发明中即为任务参数的不同。因此,首先需要根据具体的任务参数匹配相应的页面流配置并进行调用。

作为配置文件,页面流配置是根据不同网页的特点预先设定的,它们定义了网页拓扑,即网页的先后顺序、子页面以及先决条件等。为免疑义,在本发明中,一次爬取任务里多个网页(页面)的爬取,称之为页面流。页面流配置可以使用xml、json、yml等数据格式来表达。

s120,根据所述页面流配置下载目标页面。

在本步骤中,任务执行器根据页面流配置的描述,调用页面下载器将所需页面(目标页面),进行下载。该目标页面仍然是原始页面,没有经过结构化处理。

该目标页面在被下载后可以存储在数据库、缓存以及文件系统等位置,本发明对此不进行限定。

s130,根据页面配置提取目标页面中的结构化信息。

在本步骤中,任务执行器调用页面解析器,根据页面配置提取目标页面中的结构化信息,即对下载的原始页面进一步加工,提取有用的、经过结构化的信息。

作为配置文件,页面配置是根据不同的页面类型预先设定的,它们定义了如何解析下载的原始页面以及提取的信息内容和类型等。

优选地,页面配置存在于页面流配置下。即一个特定的页面流配置下可以包括一个或数个不同的页面配置。这样设置,大大提高了本发明的工作效率:从页面流配置到页面配置,逻辑清晰,任务执行器方便读取配置信息。

优选地,页面流配置存在于配置规则库中。在本发明中,可以单独设立一个配置规则库,从而将一个或多个页面流配置置于该配置规则库中。这样设置,大大提高了本发明的工作效率:将不同的页面流配置置于同一逻辑或物理位置,任务执行器在读取页面流配置时将具有更高的读取速度和工作效率。

更优选地,配置规则库包含自定义函数配置。函数是爬取网页信息的基础,本发明的配置文件支持自定义函数,从而拓展了配置文件本身的表述能力。作为示例,自定义函数配置可以由一个函数注册文件和多个函数文件组成。可以将写好的函数在函数注册文件里进行注册,从而形成函数注册文件下的函数文件。在任务执行器读取配置规则库时,可以通过函数文件名调用该函数文件。作为示例,本发明可以通过javascipt编写函数,由于javascript无需编译重启,从而能够实现本发明的热部署。

优选地,在本发明中,自定义函数配置、页面流配置、页面配置等配置文件的数据格式是xml格式、yml格式以及json格式中的任意一种或者多种。本发明通过解析上述数据格式的配置文件即可完成爬取网页内容任务,通过更新配置文件,即可完成爬虫系统的升级、扩展和维护,从而实现了热部署。

由于本发明的配置文件完整描述网页内容爬取和解析的逻辑、页面之间的拓扑关系,从而无需编写代码控制页面的顺序关系、包含关系、前置条件等,从而进一步实现了本发明的热部署。

优选地,该爬取网页内容的方法还可以包括:

s140,在根据页面配置提取目标页面中的结构化信息后,将所述结构化信息持久化。

在本步骤中,任务执行器将解析结果(结构化信息)进行持久化,以方便任务调用端通过交互接口获取该结构化信息。

作为示例,所述持久化是指将结构化信息置于数据库、缓存以及文件系统中的任意一种或者多种,从而方便调用端读取。

示例性装置

在介绍了本发明示例性实施方式的方法之后,接下来,参考图2对本发明示例性实施方式的一种爬取网页内容的装置进行说明。

图2示意性地示出了根据本发明一实施例的一种爬取网页内容的装置的结构示意图。通常,该装置可以独立成为一体,当然,本发明实施方式也不排除将该装置或者该装置的一部分设置于服务器中或者其他设备中,本发明对此不进行限定。该爬取网页内容的装置可以包括匹配模块210、下载模块220、提取模块230,具体地:

匹配模块210,用于根据任务参数调用相应的页面流配置。

通常,在执行爬取网页内容任务时,调用端会将任务提交给任务执行器。在系统内部,任务是以参数的形式表达的,不同的任务具有不同的任务参数,比如爬取“火车票信息”和爬取“酒店信息”就具有不同的任务参数,因为根据业务实践,两者的数据呈现结构不尽相同。爬取不同数据结构的信息自然需要不同的方式,表现在本发明中即为任务参数的不同。因此,首先需要根据具体的任务参数匹配相应的页面流配置并进行调用。

作为配置文件,页面流配置是根据不同网页的特点预先设定的,它们定义了网页拓扑,即网页的先后顺序、子页面以及先决条件等。为免疑义,在本发明中,一次爬取任务里多个网页(页面)的爬取,称之为页面流。页面流配置可以使用xml、json、yml等数据格式来表达。

下载模块220,用于根据所述页面流配置下载目标页面。

在本模块中,任务执行器根据页面流配置的描述,调用页面下载器将所需页面(目标页面),进行下载。该目标页面仍然是原始页面,没有经过结构化处理。

该目标页面在被下载后可以存储在数据库、缓存以及文件系统等位置,本发明对此不进行限定。

提取模块230,用于根据页面配置提取目标页面中的结构化信息。

在本模块中,任务执行器调用页面解析器,根据页面配置提取目标页面中的结构化信息,即对下载的原始页面进一步加工,提取有用的经过结构化的信息。

作为配置文件,页面配置是根据不同的页面类型预先设定的,它们定义了如何解析下载的原始页面以及提取的信息内容和类型等。

优选地,页面配置存在于页面流配置下。即一个特定的页面流配置下可以包括一个或数个不同的页面配置。这样设置,大大提高了本发明的工作效率:从页面流配置到页面配置,逻辑清晰,任务执行器方便读取配置信息。

优选地,页面流配置存在于配置规则库中。在本发明中,可以单独设立一个配置规则库,从而将一个或多个页面流配置置于该配置规则库中。这样设置,大大提高了本发明的工作效率:将不同的页面流配置置于同一逻辑或物理位置,任务执行器在读取页面流配置时将具有更高的读取速度和工作效率。

更优选地,配置规则库包含自定义函数配置。函数是爬取网页信息的基础,本发明的配置文件支持自定义函数,从而拓展了配置文件本身的表述能力。作为示例,自定义函数配置可以由一个函数注册文件和多个函数文件组成。可以将写好的函数在函数注册文件里进行注册,从而形成函数注册文件下的函数文件。在任务执行器读取配置规则库时,可以通过函数文件名调用该函数文件。作为示例,本发明可以通过javascipt编写函数,由于javascript无需编译重启,从而能够实现本发明的热部署。

优选地,在本发明中,自定义函数配置、页面流配置、页面配置等配置文件的数据格式是xml格式、yml格式以及json格式中的任意一种或者多种。本发明通过解析上述数据格式的配置文件即可完成爬取网页内容任务,通过更新配置文件,即可完成爬虫系统的升级、扩展和维护,从而实现了热部署。

由于本发明的配置文件完整描述网页内容爬取和解析的逻辑、页面之间的拓扑关系,从而无需编写代码控制页面的顺序关系、包含关系、前置条件等,从而进一步实现了本发明的热部署。

优选地,该爬取网页内容的装置还可以包括:

持久模块240,用于在根据页面配置提取目标页面中的结构化信息后,将所述结构化信息持久化。

在本模块中,任务执行器将解析结果(结构化信息)进行持久化,以方便任务调用端通过交互接口获取该结构化信息。

作为示例,所述持久化是指将结构化信息置于数据库、缓存以及文件系统中的任意一种或者多种,从而方便调用端读取。

示例性设备

在介绍了本发明示例性实施方式的方法、装置之后,接下来,参考图3对本发明示例性实施方式的一种设备进行说明。

图3示出了适于用来实现本发明实施方式的示例性计算机系统/服务器30的框图。图3显示的计算机系统/服务器30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图3所示,计算机系统/服务器30以通用计算设备的形式表现。计算机系统/服务器30的组件可以包括但不限于:一个或者多个处理器或者处理单元301,系统存储器302,连接不同系统组件(包括系统存储器302和处理单元301)的总线303。

计算机系统/服务器30典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器30访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器302可以包括易失性存储器形式的计算机系统可读介质,例如,随机存取存储器(ram)3021和/或高速缓存存储器3022。计算机系统/服务器30可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,rom3023可以用于读写不可移动的、非易失性磁介质(图3中未显示,通常称为“硬盘驱动器”)。尽管未在图3中示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线303相连。系统存储器302中可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块3024的程序/实用工具3025,可以存储在例如系统存储器302中,且这样的程序模块3024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块3024通常执行本发明所描述的实施例中的功能和/或方法。

计算机系统/服务器30也可以与一个或多个外部设备304(如键盘、指向设备、显示器等)通信。这种通信可以通过输入/输出(i/o)接口305进行。并且,计算机系统/服务器30还可以通过网络适配器306与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图3所示,网络适配器306通过总线303与计算机系统/服务器30的其它模块(如处理单元301等)通信。应当明白的是,尽管图3中未示出,可以结合计算机系统/服务器30使用其它硬件和/或软件模块。

处理单元301通过运行存储在系统存储器302中的计算机程序,从而执行各种功能应用以及数据处理,例如,执行用于实现上述方法实施例中的各步骤的指令;具体而言,处理器301可以执行存储器302中存储的计算机程序,且该计算机程序被执行时,下述指令被运行:根据任务参数调用相应的页面流配置;根据所述页面流配置下载目标页面;根据页面配置提取目标页面中的结构化信息。

示例性介质

在介绍了本发明示例性实施方式的方法、装置以及设备之后,接下来,参考图4对本发明示例性实施方式的一种计算机可读存储介质进行说明。

图4的计算机可读存储介质为光盘40,其上存储有计算机程序(即程序产品),该程序被处理器执行时,会实现上述方法实施方式中所记载的各步骤,例如,根据任务参数调用相应的页面流配置;根据所述页面流配置下载目标页面;根据页面配置提取目标页面中的结构化信息。

应当注意,尽管在上文详细描述中提及了一种爬取网页内容的装置的若干模块,但是这种划分仅仅是示例性的而并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1