掌桥专利:专业的专利平台
掌桥专利
首页

爬取数据的方法、装置、介质及电子设备

文献发布时间:2023-06-19 12:02:28


爬取数据的方法、装置、介质及电子设备

技术领域

本发明涉及计算机网络技术领域,具体涉及一种爬取数据的方法、装置、介质及电子设备。

背景技术

现有的爬虫工具有例如八爪鱼,其预先爬取了主流网站的数据,用户可以在该工具中选取其需要的网站上的某些类型的数据,例如标题、价格、名称等,该工具主要针对小白用户而设计,优点是简单易用,缺点是只能满足简单需求;此外,还有名称为火车头采集器的爬虫工具,该工具针对有相关爬虫经验的用户设计,用户可以在其上进行一些简单的配置,包括提交URL、表达式等,但同样不能满足较为复杂的需求。

现有的爬虫工具一般针对PC端开发,较少针对APP端的数据进行爬取。当前,由于智能手机等智能设备中APP的广泛应用,APP端的数据量也越来越大,对APP端数据进行爬取的需求也越来越多。

发明内容

用现有的爬虫工具一般针对PC端页面数据进行爬取,当对APP端的数据进行爬取时,会遇到某些问题。例如,现有技术PC端页面上,对于内容上连续的PC端页面,往往通过“下一页”链接到之后的页面。而在APP端数据中,即使存在内容上连续的多个APP端请求(例如http请求),这些页面上往往不设置对“下一页”的链接,当在实际业务场景中,需要爬取内容上连续的多个APP端请求时,现有爬虫工具无法实现连续爬取,降低了爬取数据的效率。

本发明的目的在于,提供一种爬取数据的方法、装置、介质及电子设备,实现对内容上连续的多个APP端请求的连续爬取。

根据本发明的一个方案,提供了一种爬取数据的方法,包括:获取本次请求URL;获取组装后续请求所需配置数据,所述配置数据包括累加参数和累加数;读取本次请求URL中包含的所述累加参数的参数值;将所述参数值与所述累加数相加,得到累加后的参数值;基于所述累加后的参数值,生成新的URL请求;将所述新的URL请求放入待请求队列,从而依据所述待请求队列中的URL请求执行爬虫任务。

根据本发明的方法实施例,该方法还包括:获取停止条件;循环执行上述方法步骤,直到判断出满足了所述停止条件。

根据本发明的方法实施例,所述停止条件包括停止表达式、第二停止值以及停止比较方式。

根据本发明的方法实施例,所述判断出满足了停止条件包括:基于停止表达式,对返回值数据进行解析,获得第一比较值,其中所述返回值数据是所述爬虫模块依据所述本次请求URL爬取相应页面的数据而获得的;基于所述停止比较方式对第一比较值和第二停止值进行比较,当比较的结果为真时,判断出满足了停止条件。

根据本发明的方法实施例,所述配置数据是由用户输入的。

根据本发明的方法实施例,所述停止条件是由用户输入的。

根据本发明的另一个方案,提供了一种爬取数据的装置,包括爬虫模块,其配置为执行爬虫任务,所述装置还包括:请求获取模块,其配置为获取本次请求URL;配置数据获取模块,其配置为获取组装后续请求所需的配置数据,所述配置数据包括累加参数和累加数;后续请求获取模块,其配置为读取本次请求URL中包含的所述累加参数的参数值;将所述参数值与所述累加数相加,得到累加后的参数值;基于所述累加后的参数值,生成新的URL请求;待请求队列更新模块,其配置为将所述新的URL请求放入所述待请求队列,从而所述爬虫模块依据所述待请求队列中的URL请求执行所述爬虫任务。

根据本发明的方法实施例,所述装置还包括:停止条件获取模块,其配置为获取停止条件;判断模块,其配置为判断所述停止条件是否满足,如果满足,则向所述爬虫模块发出停止执行所述爬虫任务的指令。

根据本发明的再一个方案,提供了一种非临时性计算机可读介质,其上存储有计算机可执行代码,所述计算机可执行代码在被处理器执行时实现所述的方法。

根据本发明的还一个方案,提供了一种电子设备,包括处理器、存储器以及其上存储的计算机可执行代码,当所述处理器执行所述计算机可执行代码时实现所述的方法。

根据本发明的方案,不依赖于页面中的链接而生成新的URL请求,可以实现内容上连续的多个APP端请求的连续爬取,提高了APP端数据的爬取效率。

附图说明

在不一定按比例绘制的附图中,相同的附图标记可以在类型的视图中描述相似的部件。附图大体上通过举例而不是限制的方式示出各种实施例,并且与说明书以及权利要求书一起用于对所公开的实施例进行说明。在适当的时候,在所有附图中使用相同的附图标记指代同一或相似的部分。这样的实施例是例证性的,而并非旨在作为本系统或方法的穷尽或排他实施例。

图1是本发明实施例的一种爬取数据的方法的流程示意图。

图2是本发明另一实施例的一种爬取数据的方法的流程示意图。

图3是示意性地示出了本发明实施例的通用爬虫引擎(即,装置)的结构图。

图4是示意性地示出了本发明实施例的爬虫装置的配置界面的示意图。

具体实施方式

此处参考附图描述本公开的各种方案以及特征。通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本发明的这些和其它特性将会变得显而易见。

本说明书可使用词组“在一个实施例中”、“在一些实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或类型实施例中的一个或多个。注意的是,在说明书全文中,相同或相近的附图标记指代相同或相似的元件,并省略不必要的重复描述。此外,具体实施例中,以单数形式出现的元件并不排除可以以多个(复数个)形式出现。

现有爬虫工具进行连续爬取,往往是从上一个返回值中寻找下一个请求,这在PC端页面中存在对下一页链接的情况下是适用的,而在APP端页面中往往不存在对下一页的链接,因此不适用。而实际上,APP端页面中也存在内容上连续的多个页面,如果可以实现对内容上连续的APP端页面数据的连续爬取,可以提高爬虫模块在爬取APP端页面时的效率。本发明通过及时动态修改指定参数,达到可以连续爬取的功能。

如图1所示,下面描述本发明实施例的一种爬取数据的方法100,该方法包括步骤:

101,获取本次请求URL。本次请求URL为当前爬虫任务(即,数据爬取任务)需要爬取的页面的URL,即页面网址。例如“http://test.com?page=10”。用户可以例如通过本发明爬虫程序的请求配置界面输入请求URL(例如,初始的请求URL),并且所输入的请求URL可以存储到数据库中。当爬虫程序运行时,可以生成用于爬取数据的待请求队列,该队列中可以包括例如从用户或者从数据库获取的请求URL以及后续生成的新的URL请求。本次请求URL可以从待请求队列中读取。或者,本次请求URL可以直接从数据库中读取。或者,本次请求URL可以由用户在请求配置页面中输入并提交给爬虫程序而获得,在这种情况下,本次请求URL一般为初始的请求URL,也就是最开始要爬取的页面URL。

103,获取组装后续请求所需的配置数据(本文中,又称“后续请求配置数据”),包括累加参数和累加数。本例中,累加参数为page,累加数为1。后续请求配置数据可以是用户在用户界面(具体地,例如后续请求配置页面)中输入的,也可以是从数据库中读取的与当前爬虫任务相关联的后续请求配置数据。累加参数为内容上连续的多个APP端请求的URL地址中,参数值随内容变化的参数。累加数为待爬取的APP端页面的累加参数的参数值与该APP端页面的(内容上)连续的后一页面的累加参数的参数值之间的变化量。

105,从本次请求URL中,读取累加参数的参数值,又称累加参数值,即本例中URL中累加参数为page的值,得到10。

107,将得到的参数值与累加数相加,得到累加后的参数值。即10+1=11,得到11。

109,基于所述累加后的参数值,生成新的URL请求。具体地,将累加后的参数值替换URL中的累加参数的参数值,例如,得到新的URL“http://test.com?page=11”。

111,将新的URL请求放入待请求队列。从而爬虫模块依据待请求队列中的URL请求执行爬虫任务。

上述步骤可以多次循环,以生成多个新的URL请求,并将其放入待请求队列,从而由爬虫模块依据待请求队列中的URL请求执行爬虫任务。这些URL请求是连续生成的,且不依赖于页面中的链接而生成,可以实现内容上连续的多个APP端http请求的连续爬取,提高了爬取效率,即本发明实施例提供了一种适用于APP端可以持续进行Http请求的爬取方法。

如图2所示,在下面的一个实施例中,描述了一种爬取数据的方法200。该方法包括步骤:

202,获取本次请求URL。可以从待请求队列中读取本次请求URL,例如“https://test.com/topics/unanswered_questions?offset=0&limit=10”。并且爬虫模块将依据本次请求URL爬取相应页面的数据,获得返回值数据。返回值数据即相应页面的数据。

204,获取停止条件。停止条件包含停止表达式、第二停止值以及停止比较方式。停止表达式例如“$.is_done”。第二停止值,例如“true”。停止比较方式例如为大于、等于或小于,等等。停止表达式配置数据为停止条件可以由用户输入,或者从数据库中读取的,或者用户在爬虫装置配置界面中输入后存储至数据库中,并可被调用,或者可以预设在爬虫系统中。

206,基于停止表达式,对返回值数据进行解析,获得的解析结果作为第一比较值,其中返回值数据是爬虫模块依据本次请求URL爬取相应页面所得到的。第一比较值例如“false”。当返回值数据是json类型时,对返回值数据进行解析可以利用诸如jsonPath工具进行。

208,基于所述停止比较方式对第一比较值和第二停止值进行比较。当停止比较方式为相等时,判断第一比较值和第二停止值是否相等,如果相等(比较结果为真),表明停止规则符合要求,此请求为最后一个请求,结束爬虫任务;如果不相等(比较结果为假),表明不符合停止规则,继续下一步骤。

210,读取后续请求配置数据中包含的累加参数和累加数配置数据,本例中累加参数为offset,累加数为10。

212,读取本次请求URL中参数为“累加参数”的参数值,即本例中URL中参数为offset的值,得到0。

214,将得到的参数值与累加数相加,即0+10=10,得到10。

216,将累加后的值替换URL中的累加参数的参数值,即offset=0替换为offset=10,得到新的URL“https://test.com/topics/unanswered_questions?offset=10&limit=10”。

218,将新的URL请求放入待请求队列。

上述步骤将多次循环,以生成多个新的URL请求,并将其放入待请求队列,从而爬虫模块依据待请求队列中的URL请求执行爬虫任务,直到满足停止规则(步骤208)结束。这些URL请求是连续生成的,且不依赖于页面中的链接而生成,可以实现对APP端的多个内容上连续页面的连续爬取,提高了APP端数据的爬取效率。并且由于设置了停止条件,爬虫模块不需要每一次都进行全量爬取,而可以智能判断是否已经执行了最后一个待爬取请求,并结束爬虫任务,从而当不满足停止条件,也就是,还有新的待爬取URL请求时,可以对新的URL请求进行数据爬取,由此便利地实现了增量爬取,提高了爬取效率。

如图3所示,示意性地示出了本发明实施例的通用爬虫引擎(即,装置)的结构图。本发明实施例的通用爬虫引擎300可同时用于PC端页面数据爬取和APP端数据爬取。爬虫引擎300具有可视化的配置管理306,通过配置爬虫程序的后续请求,利用获取下一个请求304,生成后续待爬取的APP端数据对应的新的URL请求,可实现对内容上连续的APP端数据的连续爬取功能;此外,利用停止标识302,基于获取到的停止条件,实现智能停止爬取数据和仅进行增量爬取的功能。

下面描述本发明另一实施例的爬取数据的装置(又称爬虫装置)。爬虫装置包括:爬虫模块,其配置为执行爬虫任务,即对待请求URL对应的网页执行数据爬取任务;请求获取模块,其配置为获取本次请求URL;配置数据获取模块,其配置为获取后续请求配置数据,所述后续请求配置数据包括累加参数和累加数;后续请求获取模块,其配置为读取本次请求URL中包含的所述累加参数的参数值;将所述参数值与所述累加数相加,得到累加后的参数值;基于所述累加后的参数值,生成新的URL请求;待请求队列更新模块,其配置为将所述新的URL请求放入所述待请求队列,从而所述爬虫模块依据所述待请求队列中的URL请求执行所述爬虫任务。

在一个实施例中,爬虫装置还可以包括:停止条件获取模块,其配置为获取停止条件;判断模块,其配置为判断所述停止条件是否满足,如果满足,则向所述爬虫模块发出停止执行所述爬虫任务的指令。

在一个实施例中,停止条件可以包括停止表达式、第二停止值以及停止比较方式。

在一个实施例中,判断模块可以具体配置为:基于停止表达式,对返回值数据进行解析,获得第一比较值,其中所述返回值数据是所述爬虫模块依据所述本次请求URL爬取相应页面的数据而获得的;基于所述停止比较方式对第一比较值和第二停止值进行比较,当比较的结果为真时,判断出满足了停止条件。

其中,后续请求配置数据、停止条件可以是由用户输入的;在另一些实施例中,后续请求配置数据、停止条件可以是爬虫装置从数据库中读取,或者爬虫装置中内置预设了后续请求配置数据、停止条件的选项。

如图4所示,示意性地示出了本发明实施例的爬虫装置的配置界面的示意图。用户可以在该配置界面上输入期望配置的各个参数、停止表达式等,以实现对APP端数据的连续和增量爬取功能。图4的示例中,下页累加参数为offset,下页累加数为10;停止表达式为$.paging.is_end,停止比较方式为相等,停止值为true。

对于本发明装置实施例的未详尽描述之处,可参考对应的方法实施例。

本发明一个实施例中,还提供了一种非临时性计算机可读介质,其上存储有计算机可执行代码,计算机可执行代码在被处理器执行时能够实现上述的任一方法实施例。计算机可读介质可以包括磁性的、半导体的、磁带的、光学的、可移动的、不可移动的或其他类型的计算机可读介质或计算机可读存储设备。例如,如所公开的,计算机可读介质可以是其上存储有计算机指令的存储设备或存储器模块。在一些实施例中,计算机可读介质可以是其上存储有计算机指令的盘或闪存驱动器。

本发明实施例还提供一种电子设备,包括处理器、存储器以及其上存储的计算机可执行代码。当处理器执行计算机可执行代码时实现上述的任一方法实施例及其变形。电子设备例如为服务器、桌面计算机等,并且可适用于本发明实施例的爬取数据的方法。

这里描述了各种操作或功能,其可以被实现为软件代码或指令或被定义为软件代码或指令。这样的内容可以是可直接执行的源代码或差异代码(“增量”或“块”代码)(“对象”或“可执行”形式)。软件代码或指令可以存储在计算机可读存储介质中,并且当被执行时,可以使机器执行所描述的功能或操作,并且包括用于以机器可访问的形式存储信息的任何机构(例如,计算设备,电子系统等),诸如可记录或不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质,闪存设备等)。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件单元,或者二者的结合来实施。

与“包括”、“包含”或“特征在于”同义的术语“包括”是非排他性的或者开放性的,不排除另外的、未叙述的要素或方法步骤。“包括”是权利要求语言中使用的本领域的术语,其意味着所命名的要素是必要的,但是能够添加其他要素并且仍然形成权利要求书的范围内的结构。

如本文所使用的,当在实体列表的上下文中使用术语“和/或”时,是指单独或组合出现的实体。因此,例如,短语“A、B、C、和/或D”分别包括A、B、C和D,但也包括A、B、C和D的任何和所有组合和子组合。

以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

相关技术
  • 数据爬取方法、数据爬取装置、数据爬取设备及存储介质
  • 一种数据爬取方法、装置、电子设备及存储介质
技术分类

06120113148422