CN114547412A - 一种爬虫代码的生成方法、装置、存储介质和电子设备 - Google Patents

一种爬虫代码的生成方法、装置、存储介质和电子设备 Download PDF

Info

Publication number
CN114547412A
CN114547412A CN202210112270.6A CN202210112270A CN114547412A CN 114547412 A CN114547412 A CN 114547412A CN 202210112270 A CN202210112270 A CN 202210112270A CN 114547412 A CN114547412 A CN 114547412A
Authority
CN
China
Prior art keywords
request
page
data
loading
response
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
CN202210112270.6A
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.)
Beijing Jindi Technology Co Ltd
Original Assignee
Beijing Jindi Technology 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 Jindi Technology Co Ltd filed Critical Beijing Jindi Technology Co Ltd
Priority to CN202210112270.6A priority Critical patent/CN114547412A/zh
Publication of CN114547412A publication Critical patent/CN114547412A/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
    • 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/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开实施例公开了一种爬虫代码的生成方法和装置,以及存储介质和电子设备,其方法包括:获取对应的请求指纹,其中,请求指纹是从用于请求目标信息的客户端请求中提取的,且请求指纹包括:请求头、请求体和请求的链接;获取预先生成的爬虫代码模板;以及将请求指纹作为对应的代码参数输入爬虫代码模板,以生成用于获取目标信息的爬虫代码。

Description

一种爬虫代码的生成方法、装置、存储介质和电子设备
技术领域
本发明涉及计算机技术领域,具体涉及一种爬虫代码的生成方法、装置、存储介质、电子设备和计算机程序产品。
背景技术
在实际业务场景中,需要人工开发爬虫代码。在进行大规模爬虫的时候,针对每一个维度的数据源来说,可能来自于上万个网站站点,这样,当对具有多个维度的数据源进行数据整合时,需要耗费大量的人力和物力来开发大量的爬虫代码。
此外,从异步加载的网站进行数据抓取,需要进行转包和解析处理,需要专业人员来完成。
再者,针对大量的爬虫代码不易于维护的问题,若发生网站改版,则需要对上万个站点进行维护,也需要耗费大量的人力和物力。
因此,如何自动生成爬虫代码,是待解决的技术问题。
发明内容
基于此,有必要针对基于现有数据抓取的过程中无法自动生成爬虫代码的问题,提供一种爬虫代码的生成方法、装置、存储介质、电子设备和计算机程序产品。
第一方面,本公开实施例提供了一种爬虫代码的生成方法,所述方法包括:
获取对应的请求指纹,其中,所述请求指纹是从用于请求目标信息的客户端请求中提取的,且所述请求指纹包括:请求头、请求体和请求的链接;
获取预先生成的爬虫代码模板;以及
将所述请求指纹作为对应的代码参数输入所述爬虫代码模板,以生成用于获取所述目标信息的爬虫代码。
在一种实施方式中,通过以下操作确定所述用于请求目标信息的客户端请求:
通过拦截器拦截客户端发送的至少一个数据请求;
通过所述拦截器拦截服务端针对所述至少一个数据请求对应返回的至少一个数据响应;
从所述至少一个数据响应中选取包含所述目标信息的服务端响应;以及
从所述至少一个数据请求中选取与所述服务端响应匹配的数据请求以作为用于请求所述目标信息的客户端请求。
在一种实施方式中,从所述至少一个数据响应中选取包含所述目标信息的服务端响应,包括:
针对拦截的至少一个数据请求中的每个数据请求进行模拟请求,以获取JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据;以及
将通过每次模拟请求获取的所述JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据进行比较,并根据比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应。
在一种实施方式中,根据比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应,包括:
在有比较结果表征通过目标数据请求进行模拟请求获取的所述JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据之间不存在信息差异的情况下,确定通过本次模拟请求加载的是纯静态页面;
再次基于所述目标数据请求进行模拟请求,以加载并渲染所述JS客户端脚本启用状态下的第一加载页面;
响应于接收到针对所述第一加载页面的翻页操作,重新加载并渲染所述JS客户端脚本启用状态下的第二加载页面;以及
在所述第二加载页面相比于所述第一加载页面有变化的情况下,将所述至少一个数据响应中与所述第一加载页面匹配的数据响应选定为包含所述目标信息的服务端响应。
在一种实施方式中,还包括:
在所述第二加载页面相比于所述第一加载页面无变化的情况下,继续根据其他比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应。
在一种实施方式中,还包括:
在有比较结果表征通过目标数据请求进行模拟请求获取的所述JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据之间存在信息差异的情况下,确定通过本次模拟请求加载的是纯动态页面或动态与静态相结合的页面;
再次基于所述目标数据请求进行模拟请求,以加载并渲染所述JS客户端脚本启用状态下的第三加载页面;
响应于接收到针对所述加载页面的翻页操作或检索操作,重新加载并渲染所述JS客户端脚本启用状态下的第四加载页面;以及
在所述第四加载页面相比于所述第三加载页面有变化的情况下,将所述至少一个数据响应中与所述第三加载页面匹配的数据响应选定为包含所述目标信息的服务端响应。
在一种实施方式中,还包括:
在所述第四加载页面相比于所述第三加载页面无变化的情况下,继续根据其他比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应。
第二方面,本公开实施例提供了一种爬虫代码的生成装置,所述装置包括:
获取单元,用于获取对应的请求指纹,其中,所述请求指纹是从用于请求目标信息的客户端请求中提取的,且所述请求指纹包括:请求头、请求体和请求的链接;以及
获取预先生成的爬虫代码模板;
处理单元,用于将所述请求指纹作为对应的代码参数输入所述爬虫代码模板,以生成用于获取所述目标信息的爬虫代码。
第三方面,本公开实施例提供一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述的方法步骤。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述的方法步骤。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述的方法步骤。
在本公开实施例中,获取对应的请求指纹,其中,请求指纹是从用于请求目标信息的客户端请求中提取的,且请求指纹包括:请求头、请求体和请求的链接;获取预先生成的爬虫代码模板;以及将请求指纹作为对应的代码参数输入爬虫代码模板,以生成用于获取目标信息的爬虫代码。本公开实施例提供的爬虫代码的生成方法,由于能够获取从用于请求目标信息的客户端请求中提取的请求指纹,这样,将请求指纹作为对应的代码参数输入爬虫代码模板中,能够自动生成用于获取目标信息的爬虫代码。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1为根据本公开一示例性实施例提供的爬虫代码的生成方法的流程图;
图2为根据本公开一示例性实施例提供的爬虫代码的生成装置200的结构示意图;
图3示出了本公开一示例性实施例提供的一种电子设备的示意图;
图4示出了本公开一示例性实施例提供的一种计算机可读介质的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本公开使用的技术术语或者科学术语应当为本公开所属领域技术人员所理解的通常意义。
另外,术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本公开实施例提供一种爬虫代码的生成方法及装置、一种电子设备以及计算机可读介质,下面结合附图进行说明。
请参考图1,其示出了本公开的一些实施方式所提供的一种爬虫代码的生成方法的流程图,如图1所示,爬虫代码的生成方法可以包括以下步骤:
步骤S101:获取对应的请求指纹,其中,请求指纹是从用于请求目标信息的客户端请求中提取的,且请求指纹包括:请求头、请求体和请求的链接。
在一种可能的实现方式中,通过以下操作确定用于请求目标信息的客户端请求:
通过拦截器拦截客户端发送的至少一个数据请求;
通过拦截器拦截服务端针对至少一个数据请求对应返回的至少一个数据响应;
从至少一个数据响应中选取包含目标信息的服务端响应;以及
从至少一个数据请求中选取与服务端响应匹配的数据请求以作为用于请求目标信息的客户端请求;这样,通过上述步骤就能够快速且精准地将与服务器响应匹配的数据请求作为用于请求目标信息的客户端请求。
在一种可能的实现方式中,从至少一个数据响应中选取包含目标信息的服务端响应,包括以下步骤:
针对拦截的至少一个数据请求中的每个数据请求进行模拟请求,以获取JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据;以及
将通过每次模拟请求获取的JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据进行比较,并根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应;这样,通过上述步骤就可以根据比较结果从至少一个数据响应中快速且精准地选取包含目标信息的服务端响应。
在一种可能的实现方式中,根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应,包括以下步骤:
在有比较结果表征通过目标数据请求进行模拟请求获取的JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据之间不存在信息差异的情况下,确定通过本次模拟请求加载的是纯静态页面;
再次基于目标数据请求进行模拟请求,以加载并渲染JS客户端脚本启用状态下的第一加载页面;
响应于接收到针对第一加载页面的翻页操作,重新加载并渲染JS客户端脚本启用状态下的第二加载页面;以及
在第二加载页面相比于第一加载页面有变化的情况下,将至少一个数据响应中与第一加载页面匹配的数据响应选定为包含目标信息的服务端响应;这样,就能够基于比对第二加载页面和第一加载页面之间是否有页面变化,并在比对结果有页面有变化的情况下,快速且精准地从至少一个数据响应中将与第一加载页面匹配的数据响应选定为包括目标信息的服务端响应。
需要说明的是,上述根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应的方法往往应用于当前模拟请求加载的页面是纯静态页面的应用场景中。
在一种可能的实现方式中,本公开实施例提供的爬虫代码的生成方法还包括以下步骤:
在第二加载页面相比于第一加载页面无变化的情况下,继续根据其他比较结果从至少一个数据响应中选取包含目标信息的服务端响应。
在实际应用场景中,在第二加载页面相比于第一加载页面无变化的情况下,重复上述针对纯静态页面所采用的选取方式——根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应,直至第二加载页面相比于第一加载页面发生变化为止,则将至少一个数据响应中与第一加载页面匹配的数据响应选定为包含目标信息的服务端响应。
步骤S102:获取预先生成的爬虫代码模板。在本公开实施例提供的爬虫代码的生成方法中,对预先生成的爬虫代码模板的类型以及形式不做具体限制,可以根据不同应用场景的需要进行调整。
步骤S103:将请求指纹作为对应的代码参数输入爬虫代码模板,以生成用于获取目标信息的爬虫代码。
在本公开实施例提供的爬虫代码的生成方法中,请求指纹是从用于请求目标信息的客户端请求中提取的,且请求指纹包括:请求头、请求体和请求的链接。
在一种可能的实现方式中,本公开实施例提供的爬虫代码的生成方法还包括以下步骤:
在有比较结果表征通过目标数据请求进行模拟请求获取的JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据之间存在信息差异的情况下,确定通过本次模拟请求加载的是纯动态页面或动态与静态相结合的页面;
再次基于目标数据请求进行模拟请求,以加载并渲染JS客户端脚本启用状态下的第三加载页面;
响应于接收到针对加载页面的翻页操作或检索操作,重新加载并渲染JS客户端脚本启用状态下的第四加载页面;以及
在第四加载页面相比于第三加载页面有变化的情况下,将至少一个数据响应中与第三加载页面匹配的数据响应选定为包含目标信息的服务端响应;这样,就能够基于比对第四加载页面和第三加载页面之间是否有页面变化,并在比对结果为页面有变化的情况下,快速且精准地从至少一个数据响应中将与第三加载页面匹配的数据响应选定为包括目标信息的服务端响应。
需要说明的是,上述根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应的方法往往应用于当前模拟请求加载的页面是纯动态页面或动态与静态相结合的页面的应用场景中。
在一种可能的实现方式中,本公开实施例提供的爬虫代码的生成方法还包括以下步骤:
在第四加载页面相比于第三加载页面无变化的情况下,继续根据其他比较结果从至少一个数据响应中选取包含目标信息的服务端响应。
在实际应用场景中,在第四加载页面相比于第三加载页面无变化的情况下,重复上述针对纯动态页面或动态与静态相结合的页面所采用的选取方式——根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应,直至第四加载页面相比于第三加载页面发生变化为止,则将至少一个数据响应中与第三加载页面匹配的数据响应选定为包含目标信息的服务端响应。
在本公开实施例中,获取对应的请求指纹,其中,请求指纹是从用于请求目标信息的客户端请求中提取的,且请求指纹包括:请求头、请求体和请求的链接;获取预先生成的爬虫代码模板;以及将请求指纹作为对应的代码参数输入爬虫代码模板,以生成用于获取目标信息的爬虫代码。本公开实施例提供的爬虫代码的生成方法,由于能够获取从用于请求目标信息的客户端请求中提取的请求指纹,这样,将请求指纹作为对应的代码参数输入爬虫代码模板中,能够自动生成用于获取目标信息的爬虫代码。
在上述的实施例中,提供了一种爬虫代码的生成方法,与之相对应的,本公开还提供一种爬虫代码的生成装置。本公开实施例提供的爬虫代码的生成装置可以实施上述爬虫代码的生成方法,该爬虫代码的生成装置可以通过软件、硬件或软硬结合的方式来实现。例如,该爬虫代码的生成装置可以包括集成的或分开的功能模块或单元来执行上述各方法中的对应步骤。
请参考图2,其示出了本公开的一些实施方式所提供的一种爬虫代码的生成装置的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
如图2所示,爬虫代码的生成装置200可以包括:
获取单元201,用于获取对应的请求指纹,其中,请求指纹是从用于请求目标信息的客户端请求中提取的,且请求指纹包括:请求头、请求体和请求的链接;以及获取预先生成的爬虫代码模板;
处理单元202,用于将请求指纹作为对应的代码参数输入爬虫代码模板,以生成用于获取目标信息的爬虫代码。
在本公开实施例的一些实施方式中,所述装置200,还可以包括:
确定单元(在图2中未示出),用于:
通过以下操作确定用于请求目标信息的客户端请求:
通过拦截器拦截客户端发送的至少一个数据请求;
通过拦截器拦截服务端针对至少一个数据请求对应返回的至少一个数据响应;
从至少一个数据响应中选取包含目标信息的服务端响应;以及
从至少一个数据请求中选取与服务端响应匹配的数据请求以作为用于请求目标信息的客户端请求。
在本公开实施例的一些实施方式中,确定单元具体用于:
针对拦截的至少一个数据请求中的每个数据请求进行模拟请求,以获取JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据;以及
将通过每次模拟请求获取的JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据进行比较,并根据比较结果从至少一个数据响应中选取包含目标信息的服务端响应。
在本公开实施例的一些实施方式中,确定单元具体用于:
在有比较结果表征通过目标数据请求进行模拟请求获取的JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据之间不存在信息差异的情况下,确定通过本次模拟请求加载的是纯静态页面;
再次基于目标数据请求进行模拟请求,以加载并渲染JS客户端脚本启用状态下的第一加载页面;
响应于接收到针对第一加载页面的翻页操作,重新加载并渲染JS客户端脚本启用状态下的第二加载页面;以及
在第二加载页面相比于第一加载页面有变化的情况下,将至少一个数据响应中与第一加载页面匹配的数据响应选定为包含目标信息的服务端响应。
在本公开实施例的一些实施方式中,确定单元还具体用于:
在第二加载页面相比于第一加载页面无变化的情况下,继续根据其他比较结果从至少一个数据响应中选取包含目标信息的服务端响应。
在本公开实施例的一些实施方式中,确定单元还用于:
在有比较结果表征通过目标数据请求进行模拟请求获取的JS客户端脚本禁用状态下的第一页面加载数据和JS客户端脚本启用状态下的第二页面加载数据之间存在信息差异的情况下,确定通过本次模拟请求加载的是纯动态页面或动态与静态相结合的页面;
再次基于目标数据请求进行模拟请求,以加载并渲染JS客户端脚本启用状态下的第三加载页面;
响应于接收到针对加载页面的翻页操作或检索操作,重新加载并渲染JS客户端脚本启用状态下的第四加载页面;以及
在第四加载页面相比于第三加载页面有变化的情况下,将至少一个数据响应中与第三加载页面匹配的数据响应选定为包含目标信息的服务端响应。
在本公开实施例的一些实施方式中,确定单元还具体用于:
在第四加载页面相比于第三加载页面无变化的情况下,继续根据其他比较结果从至少一个数据响应中选取包含目标信息的服务端响应。
在本公开实施例的一些实施方式中本公开实施例提供的爬虫代码的生成装置200,与本公开前述实施例提供的爬虫代码的生成方法出于相同的发明构思,具有相同的有益效果。
本公开实施方式还提供一种与前述实施方式所提供的爬虫代码的生成方法对应的电子设备,所述电子设备可以是用于服务端的电子设备,例如服务器,包括独立的服务器和分布式服务器集群等,以执行上述爬虫代码的生成方法;所述电子设备也可以是用于客户端的电子设备,例如手机、笔记本电脑、平板电脑、台式机电脑等,以执行上述爬虫代码的生成方法。
请参考图3,其示出了本公开的一些实施方式所提供的一种电子设备的示意图。如图3所示,所述电子设备40包括:处理器400,存储器401,总线402和通信接口403,所述处理器400、通信接口403和存储器401通过总线402连接;所述存储器401中存储有可在所述处理器400上运行的计算机程序,所述处理器400运行所述计算机程序时执行本公开爬虫代码的生成方法。
其中,存储器401可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线402可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器401用于存储程序,所述处理器400在接收到执行指令后,执行所述程序,前述本公开实施例任一实施方式揭示的爬虫代码的生成方法可以应用于处理器400中,或者由处理器400实现。
处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器400读取存储器401中的信息,结合其硬件完成上述方法的步骤。
本公开实施例提供的电子设备与本公开实施例提供的爬虫代码的生成方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本公开实施方式还提供一种与前述实施方式所提供的爬虫代码的生成方法对应的计算机可读介质,请参考图4,其示出的计算机可读存储介质为光盘50,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述爬虫代码的生成方法。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本公开的上述实施例提供的计算机可读存储介质与本公开实施例提供的爬虫代码的生成方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是,附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围,其均应涵盖在本公开的权利要求和说明书的范围当中。

Claims (11)

1.一种爬虫代码的生成方法,包括:
获取对应的请求指纹,其中,所述请求指纹是从用于请求目标信息的客户端请求中提取的,且所述请求指纹包括:请求头、请求体和请求的链接;
获取预先生成的爬虫代码模板;以及
将所述请求指纹作为对应的代码参数输入所述爬虫代码模板,以生成用于获取所述目标信息的爬虫代码。
2.根据权利要求1所述的方法,其中,通过以下操作确定所述用于请求目标信息的客户端请求:
通过拦截器拦截客户端发送的至少一个数据请求;
通过所述拦截器拦截服务端针对所述至少一个数据请求对应返回的至少一个数据响应;
从所述至少一个数据响应中选取包含所述目标信息的服务端响应;以及
从所述至少一个数据请求中选取与所述服务端响应匹配的数据请求以作为用于请求所述目标信息的客户端请求。
3.根据权利要求2所述的方法,其中,从所述至少一个数据响应中选取包含所述目标信息的服务端响应,包括:
针对拦截的至少一个数据请求中的每个数据请求进行模拟请求,以获取JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据;以及
将通过每次模拟请求获取的所述JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据进行比较,并根据比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应。
4.根据权利要求3所述的方法,其中,根据比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应,包括:
在有比较结果表征通过目标数据请求进行模拟请求获取的所述JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据之间不存在信息差异的情况下,确定通过本次模拟请求加载的是纯静态页面;
再次基于所述目标数据请求进行模拟请求,以加载并渲染所述JS客户端脚本启用状态下的第一加载页面;
响应于接收到针对所述第一加载页面的翻页操作,重新加载并渲染所述JS客户端脚本启用状态下的第二加载页面;以及
在所述第二加载页面相比于所述第一加载页面有变化的情况下,将所述至少一个数据响应中与所述第一加载页面匹配的数据响应选定为包含所述目标信息的服务端响应。
5.根据权利要求4所述的方法,还包括:
在所述第二加载页面相比于所述第一加载页面无变化的情况下,继续根据其他比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应。
6.根据权利要求4所述的方法,还包括:
在有比较结果表征通过目标数据请求进行模拟请求获取的所述JS客户端脚本禁用状态下的第一页面加载数据和所述JS客户端脚本启用状态下的第二页面加载数据之间存在信息差异的情况下,确定通过本次模拟请求加载的是纯动态页面或动态与静态相结合的页面;
再次基于所述目标数据请求进行模拟请求,以加载并渲染所述JS客户端脚本启用状态下的第三加载页面;
响应于接收到针对所述加载页面的翻页操作或检索操作,重新加载并渲染所述JS客户端脚本启用状态下的第四加载页面;以及
在所述第四加载页面相比于所述第三加载页面有变化的情况下,将所述至少一个数据响应中与所述第三加载页面匹配的数据响应选定为包含所述目标信息的服务端响应。
7.根据权利要求6所述的方法,还包括:
在所述第四加载页面相比于所述第三加载页面无变化的情况下,继续根据其他比较结果从所述至少一个数据响应中选取包含所述目标信息的服务端响应。
8.一种爬虫代码的生成装置,包括:
获取单元,用于获取对应的请求指纹,其中,所述请求指纹是从用于请求目标信息的客户端请求中提取的,且所述请求指纹包括:请求头、请求体和请求的链接;以及
获取预先生成的爬虫代码模板;
处理单元,用于将所述请求指纹作为对应的代码参数输入所述爬虫代码模板,以生成用于获取所述目标信息的爬虫代码。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1至7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至7中任一项所述的方法。
CN202210112270.6A 2022-01-29 2022-01-29 一种爬虫代码的生成方法、装置、存储介质和电子设备 Pending CN114547412A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210112270.6A CN114547412A (zh) 2022-01-29 2022-01-29 一种爬虫代码的生成方法、装置、存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210112270.6A CN114547412A (zh) 2022-01-29 2022-01-29 一种爬虫代码的生成方法、装置、存储介质和电子设备

Publications (1)

Publication Number Publication Date
CN114547412A true CN114547412A (zh) 2022-05-27

Family

ID=81673131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210112270.6A Pending CN114547412A (zh) 2022-01-29 2022-01-29 一种爬虫代码的生成方法、装置、存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN114547412A (zh)

Similar Documents

Publication Publication Date Title
CN110086877A (zh) 应用程序分享、分享信息显示方法、装置、设备及介质
CN112765023B (zh) 测试用例生成方法、装置
CN105488125A (zh) 页面访问方法和装置
WO2016058488A1 (zh) 一种用于提供sdk文件的方法与设备
CN113536174A (zh) 一种界面加载方法、装置及设备
CN110888972A (zh) 一种基于Spark Streaming的敏感内容识别方法及装置
CN113407254B (zh) 表单生成方法、装置、电子设备及存储介质
CN112733510A (zh) 一种财务凭证生成方法、装置、设备及计算机可读存储介质
CN110704099B (zh) 联盟链的构建方法、装置和电子设备
CN115509608B (zh) 指令优化方法、装置、电子设备及计算机可读存储介质
CN109324838B (zh) 单片机程序的执行方法、执行装置及终端
CN109345063B (zh) 用于风控系统的数据处理方法、设备和存储介质
CN110737852A (zh) 信息处理方法、装置、电子设备及介质
CN113360215A (zh) 程序运行方法、装置及计算机可读存储介质
CN114611039B (zh) 异步加载规则的解析方法、装置、存储介质和电子设备
CN114547412A (zh) 一种爬虫代码的生成方法、装置、存储介质和电子设备
CN111859403B (zh) 依赖关系漏洞的确定方法、装置、电子设备及存储介质
CN112506781B (zh) 测试监控方法、装置、电子设备、存储介质及程序产品
CN112330421B (zh) 订单处理方法、装置、电子设备及存储介质
CN111464429B (zh) 微信小程序多项目兼容共享方法、系统、存储介质及设备
CN112953996B (zh) 服务方法及其系统
CN113971074A (zh) 事务处理方法、装置、电子设备及计算机可读存储介质
CN111460273B (zh) 信息推送方法和装置
CN113760237A (zh) 编译地址的更新方法、装置、终端设备及可读存储介质
CN106020996A (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