网页数据爬取方法、装置、设备及存储介质与流程

文档序号:22129947发布日期:2020-09-08 12:44阅读:143来源:国知局
网页数据爬取方法、装置、设备及存储介质与流程

本发明涉及大数据领域,尤其涉及一种网页数据爬取方法、装置、设备及存储介质。



背景技术:

随着数据爆发式增长,越来越多的数据出现,海量、高增长率和多样化的信息已经突破常规软件工具的捕捉、管理、处理。而且不断变化的数据管理方式,使用传统的数据收集方法很多数据都无法成功收集,在一些需要大数据分析得出结论的模型就无法运行。

在数据领域中存在对海量数据分析的需求,但是海量数据的格式各不相同在获取上有一定的难度。而且各个网站对数据的处理方式也不一样:有些网站将数据内容发布于网站中却不设置复制链接,需要人使用手工去抄写后输入到数据处理工具中;有些网站将数据公布后,在获取数据过程中却会因为传统的解码数据算法与该网站的不同,导致数据获取时变成乱码;有些网站为了控制资源的利用率,只允许一个ip地址几次登录该网站避免高并发。这都给数据获取带来极大的困难,而数据分析又需要更多的数据,传统数据获得方式在数据的获得遇到较大的瓶颈。因此需要一种更加兼容的数据获取方式,给数据分析提供较大的数据量。



技术实现要素:

本发明的主要目的在于解决由于不同网站的数据解密显示均需要选择不同解密算法,导致解密方式多样的问题。

本发明第一方面提供了一种网页数据爬取方法,包括:根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件,所述第一js文件用于驱动所述浏览器生成所述目标页面;解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数,其中,所述输出函数用于驱动显示所述目标页面;识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件,其中,所述爬取转换代码用于识别所述目标网页的显示数据的来源数据库和调用所述第二js文件中指定的解密算法;加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。

可选的,在本发明第一方面的第一种实现方式中,所述根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件包括:解析所述显示请求中携带的所述目标页面的框架文件标识,以及获取所述浏览器的识别码;根据所述框架文件标识和所述识别码,从所述浏览器对应的本地资源服务器查询出对应的第一js文件。

可选的,在本发明第一方面的第二种实现方式中,所述解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数包括:对所述代码信息中所有的字符按照从左至右顺序扫描,获得所述代码信息的代码字符组合;将预设的所述输出函数的字符组合与所述代码字符组合进行一致性的匹配;将所述代码字符组合中匹配成功的字符组合的位置在所述代码信息中对应的位置进行标记。

可选的,在本发明第一方面的第三种实现方式中,在所述解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数之前,还包括:标记所述第一js文件为检测状态,运行所述第一js文件将所述目标页面显示于所述浏览器中,其中,所述检测状态是将所述第一js文件锁定在检测指令中不能执行其他指令;读取所述浏览器中的js事件日志,判断所述js事件日志中是否存在所述输出函数的结果返回指令,其中,所述js事件日志是记录所述浏览器的js文件运行指令的文件;若是,解除所述第一js文件的检测状态;若否,则重新抓取所述第一js文件。

可选的,在本发明第一方面的第四种实现方式中,所述加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求包括:解析所述第二js文件,得到javascript代码,其中所述javascript代码中内嵌有所述爬取转换代码;执行所述javascript代码,并利用程序指针监控所述javascript代码的执行情况;若所述执行情况为所述程序指针位于所述爬取转换代码位置时,调用所述浏览器中预设的请求触发程序读取所述爬取转换代码中的网络资源定位符,其中,所述网络资源定位符用于定位所述来源数据库的网络地址;解析所述网络资源定位符中的接口路径,其中,所述接口路径用于确定在所述浏览器中与所述网络资源定位符对应的接口服务器;调用所述接口服务器向所述来源数据库发送生成请求。

可选的,在本发明第一方面的第五种实现方式中,在所述接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据之后,还包括:读取所述第二js文件驱动显示的所述目标页面的特征码;将所述特征码记录至所述浏览器对应本地资源服务器中抓取历史记录日志的查询目录,其中,所述查询目录是检索特征码的数据库;将所述特征码对应的所述明文显示数据复制进入所述抓取历史记录日志中的历史数据单,其中,所述历史数据单用于存储特征码对应的明文显示数据信息。

可选的,在本发明第一方面的第六种实现方式中,在所述加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求之前,还包括:读取所述第二js文件驱动显示的所述目标页面的特征码;判断所述特征码是否在所述查询目录中被记录;若是,读取所述历史数据单中所述特征码对应的明文显示数据;若否,则加载所述第二js文件。

本发明第二方面提供了一种网页数据爬取装置,包括:接收模块,用于根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件,所述第一js文件用于驱动所述浏览器生成所述目标页面;读取模块,用于解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数,其中,所述输出函数用于驱动显示所述目标页面;增添模块,用于识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件,其中,所述爬取转换代码用于识别所述目标网页的显示数据的来源数据库和调用所述第二js文件中指定的解密算法;发送模块,用于加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;获取模块,用于接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。

可选的,在本发明第二方面的第一种实现方式中,所述接收模块具体用于:解析所述显示请求中携带的所述目标页面的框架文件标识,以及获取所述浏览器的识别码;根据所述框架文件标识和所述识别码,从所述浏览器对应的本地资源服务器查询出对应的第一js文件。

可选的,在本发明第二方面的第二种实现方式中,所述网页数据爬取装置还包括检测模块,所述检测模块具体用于:标记所述第一js文件为检测状态,运行所述第一js文件将所述目标页面显示于所述浏览器中,其中,所述检测状态是将所述第一js文件锁定在检测指令中不能执行其他指令;读取所述浏览器中的js事件日志,判断所述js事件日志中是否存在所述输出函数的结果返回指令,其中,所述js事件日志是记录所述浏览器的js文件运行指令的文件;若是,解除所述第一js文件的检测状态;若否,则重新抓取所述第一js文件。

可选的,在本发明第二方面的第三种实现方式中,所述查询模块包括:对所述代码信息中所有的字符按照从左至右顺序扫描,获得所述代码信息的代码字符组合;将预设的所述输出函数的字符组合与所述代码字符组合进行一致性的匹配;将所述代码字符组合中匹配成功的字符组合的位置在所述代码信息中对应的位置进行标记。

可选的,在本发明第二方面的第四种实现方式中,所述发送模块还包括:

解析单元,具体用于解析所述第二js文件,得到javascript代码,其中所述javascript代码中内嵌有所述爬取转换代码;

执行单元,具体用于执行所述javascript代码,并利用程序指针监控所述javascript代码的执行情况;

读取单元,具体用于若所述执行情况为所述程序指针位于所述爬取转换代码位置时,调用所述浏览器中预设的请求触发程序读取所述爬取转换代码中的网络资源定位符,其中,所述网络资源定位符用于定位所述来源数据库的网络地址;

接口单元,具体用于解析所述网络资源定位符中的接口路径,其中,所述接口路径用于确定在所述浏览器中与所述网络资源定位符对应的接口服务器;

调用单元,具体用于调用所述接口服务器向所述来源数据库发送生成请求。

可选的,在本发明第二方面的第五种实现方式中,所述网页数据爬取装置还包括验重模块,所述验重模块具体用于:读取所述第二js文件驱动显示的所述目标页面的特征码;将所述特征码记录至所述浏览器对应本地资源服务器中抓取历史记录日志的查询目录,其中,所述查询目录是检索特征码的数据库;将所述特征码对应的所述明文显示数据复制进入所述抓取历史记录日志中的历史数据单,其中,所述历史数据单用于存储特征码对应的明文显示数据信息。

可选的,在本发明第二方面的第六种实现方式中,所述网页数据爬取装置还包括记录模块,所述记录模块具体用于:读取所述第二js文件驱动显示的所述目标页面的特征码;判断所述特征码是否在所述查询目录中被记录;若是,读取所述历史数据单中所述特征码对应的明文显示数据;若否,则加载所述第二js文件。

本发明第三方面提供了一种网页数据爬取设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;所述至少一个处理器调用所述存储器中的所述指令,以使得所述网页数据爬取设备执行上述的网页数据爬取方法。本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的网页数据爬取方法。本发明提供的技术方案中,接收目标网页的显示请求,根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件,所述第一js文件用于驱动所述浏览器生成所述目标页面;解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数,其中,所述输出函数用于驱动显示所述目标页面;识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件,其中,所述爬取转换代码用于识别所述目标网页的显示数据的来源数据库和调用所述第二js文件中指定的解密算法;加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。基于这样的实现方式,通过修改的加载不同网页对应的浏览器上的js文件,再将修改后的js文件对网页进行重新加载运行,由于在修改后的js文件中增加了加解密的代码,限制了再执行js文件获取网页数据时,只有使用同一个加解密方式,从而使不同数据处理的网页之间的数据信息可以通过同一种处理方式被获取到,并且能自动生成数据信息的文件,不需要再进行额外的再处理,使数据处理的数据来源获取更加高效快速。

附图说明

图1为本发明实施例中网页数据爬取方法的一个实施例示意图;

图2为本发明实施例中网页数据爬取方法的另一个实施例示意图;

图3为本发明实施例中网页数据爬取装置的一个实施例示意图;

图4为本发明实施例中网页数据爬取装置的另一个实施例示意图;

图5为本发明实施例中网页数据爬取设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种网页数据爬取方法、装置、设备及存储介质,接收目标网页的显示请求,根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件,所述第一js文件用于驱动所述浏览器生成所述目标页面;解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数,其中,所述输出函数用于驱动显示所述目标页面;识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件,其中,所述爬取转换代码用于识别所述目标网页的显示数据的来源数据库和调用所述第二js文件中指定的解密算法;加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。本发明实施例中,基于这样的实现方式,通过修改的加载不同网页对应的浏览器上的js文件,再将修改后的js文件对网页进行重新加载运行,由于在修改后的js文件中增加了加解密的代码,限制了再执行js文件获取网页数据时,只有使用同一个加解密方式,从而使不同数据处理的网页之间的数据信息可以通过同一种处理方式被获取到,并且能自动生成数据信息的文件,不需要再进行额外的再处理,使数据处理的数据来源获取更加高效快速。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中网页数据爬取方法的一个实施例包括:

101、根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件;

在本实施例中,加载目标网页的为内置的浏览器控件,在接收到目标页面的url地址后,解析url的dns地址,将页面加载请求发送至网络服务器,接收到html文件。读取html文本,解析html文本加载的ccs、图片等内容。其中,加载的步骤是渲染与加载同时进行。如果遇到语义解释性的标签嵌入文件,那么此时下载过程会启用单独连接进行下载。样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素重新进行渲染。js、css中如有重定义,后定义函数将覆盖前定义函数。

在另一种实施例中,加载的页面并不是由内置的浏览器控件执行,而是使用代理服务器设置的url,将目标页面的在代理终端上进行加载,然后与该代理终端进行交互完成数据的收集与获取。

102、解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数;

在本实施例中,可以获取查询功能的按钮名称作为特征信息。例如,在“name”处获取类似“搜索查询”的字符作为特性信息,根据特性信息然后在第一js文件的代码中查询出输出函数。在另一种实施例中,可以将实现查询功能的控件版本和名称组合共同作为特征信息。例如,在“verison”和“id”处获得“3021.152.3”和“查询内置栏”这样的特征信息组合。也可以将查询功能的类型与版本信息组合共同作为特征信息。例如,查询的类型为sql,在“class”处获得该类型与“version”获得的“6456.521”组合共同作为特征信息。在一种实施例中,查询出第一js文件中的输出函数,输出函数查询依据是上一步骤获得的特征信息。输出函数一般在js文件中有alert()、document.write()、prompt()、confirm()这样四种,而特征信息主要用于锁定该输出函数的关联对象。另一种实施例中,第一js文件中只有一个输出函数,则不需要根据特征信息进行锁定,而是直接查询出该输出函数所在位置。

103、识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件;

在本实施例中,输出函数的返回值中添加一段预先设置好的ajax代码。该ajax代码主要是包括以下几个内容:1.确定超文本传输协议的请求格式;2.确定超文本传输协议的本地服务页面的资源定位符;3.定义解密数据的内容;4.定义数据类型;5.定义链接方式。

在添加完成后,即可获得第二js文件。对js文件也可以继续有其他更改,但包含该ajax代码更改特征的都属于本步骤需要获得的第二js文件。

在另一种实施例中,目标页面已经在代理终端上加载成功,向代理终端发出获取指令,代理终端通过目标页面向网络服务器发出获得第一js文件的请求,但接收的服务器地址为本地服务器。则获取到第一js文件后,对第一js文件进行修改,获得第二js文件。

104、加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;

本实施例中,加载第二js文件运行目标页面,ajax代码中有url确定网络数据库的地址,向网络数据库进行发送数据请求,数据请求为要求传输所需的收集数据。另外,在加载第二js文件之前还可以对第二js文件做进一步优化,合并第二js文件的代码,尽可能的减少使用script标签,将一些css文件也合并到第二js文件中。

在另一种实施例,目标页面并加载第二js文件的文件信息,并不加载图片、超链接、侧导航这样的数据,减少目标页面加载时间节约资源。并且在发送数据请求时,只针对需要收集的数据进行请求,对于相关的图片渲染不做请求,减少传输过程花费的时间。

在第三种实施例中,向代理终端发送第二js文件,并向代理终端发送数据请求,由代理终端加载第二js文件并向网络数据库发送数据请求。但是接收数据请求的反馈还是本地服务器,由本地服务器对数据请求的反馈进行解析获得所需数据。

105、接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。

本实施例中,加载第二js文件运行目标页面,ajax代码中有url确定网络数据库的地址,向网络数据库进行发送数据请求,数据请求为要求传输所需的收集数据。另外,在加载第二js文件之前还可以对第二js文件做进一步优化,合并第二js文件的代码,尽可能的减少使用script标签,将一些css文件也合并到第二js文件中。

在另一种实施例,目标页面并加载第二js文件的文件信息,并不加载图片、超链接、侧导航这样的数据,减少目标页面加载时间节约资源。并且在发送数据请求时,只针对需要收集的数据进行请求,对于相关的图片渲染不做请求,减少传输过程花费的时间。

在第三种实施例中,向代理终端发送第二js文件,并向代理终端发送数据请求,由代理终端加载第二js文件并向网络数据库发送数据请求。但是接收数据请求的反馈还是本地服务器,由本地服务器对数据请求的反馈进行解析获得所需数据。

本发明实施例中,基于这样的实现方式,通过修改的加载不同网页对应的浏览器上的js文件,再将修改后的js文件对网页进行重新加载运行,由于在修改后的js文件中增加了加解密的代码,限制了再执行js文件获取网页数据时,只有使用同一个加解密方式,从而使不同数据处理的网页之间的数据信息可以通过同一种处理方式被获取到,并且能自动生成数据信息的文件,不需要再进行额外的再处理,使数据处理的数据来源获取更加高效快速。

请参阅图2,本发明实施例中网页数据爬取方法的另一个实施例包括:

201、根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件;

其中具体实现方式可以为:

解析所述显示请求中携带的所述目标页面的框架文件标识,以及获取所述浏览器的识别码;

在本地实施例中,解析目标页面的变量获得进入js文件的标识,例如,在大多数浏览器中可以找到“sources”的文件夹,然后在“sources”的“page”下,的“dup”中有个“js”文件夹,而在机器执行时,可以将进入该js文件的标识提取。

根据所述框架文件标识和所述识别码,从所述浏览器对应的本地资源服务器查询出对应的第一js文件;

在本实施例中,获得标识后就需要向本地资源服务器申请获取第一js文件,在发送请求上可以有一个例子,一个文件请求内容包括:1.要求请求的格式;2.要求请求静态资源服务器的url地址;3.数据接收的url地址;4.要求不断接收客户连接;5.在服务器阻塞时等待socket连接;6.定义读取缓冲池。

在本实施例中,接收第一文件在本地服务器。第一js文件先进入物理网卡中,然后将该数据以dma方式写入内存中,然后通过数据中断触发处理器启动存储器,将第一文件存储至本地存储器中。在另一种实施例中,使用代理终端完成接收第一js文件,然后发送数据更改指令至代理终端,在第一js文件更改完成后接收更改完成的第二js文件。

202、标记所述第一js文件为检测状态,运行所述第一js文件将所述目标页面显示于所述浏览器中;

在本实施例中,将所述第一js文件进行锁定进行检查是否有效,编译第一js文件中的代码信息,然后根据二进制算法对机器进行直接操作,调动所有资源对显示请求进行实现。

203、读取所述浏览器中的js事件日志,判断所述js事件日志中是否存在所述输出函数的结果返回指令;

在本实施例中,将所有第一js文件对机器的操作都记录在js事件日志中,而结果返回指令是固定的二进制排序例如:“010101011100”这样的排序数据,将该排序数据直接查询出确认结果返回指令被执行。在另一种实施例中,将执行完成的操作二进制编码反编译获得一系列指令操作字符,然后搜索对应的指令操作字符,判断所述字符是否存在。

204、若是,解除所述第一js文件的检测状态;

在本实施例中,若已经发现该指令则将所述第一js文件的检测状态解除,然后进行下一步执行。

205、若否,则重新抓取所述第一js文件;

206、解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数;

其中具体实现方式可以为:

对所述代码信息中所有的字符按照从左至右顺序扫描,获得所述代码信息的代码字符组合;

在本实施例中,对代码信息扫描“print()”、“paste()”等函数特征字符组合是在所有的数据中掩盖的,并不可以查明。扫描后,与“a256-lrqayz41hhjgur0wyid5lqnifo0f4m07padbebgnh80=”这样的数据共同被输入至处理系统中,但是这个步骤只是输入信息并不知道那种特征字符是我们所需要的。

将预设的所述输出函数的字符组合与所述代码字符组合进行一致性的匹配;

在本实施例中,输出函数确定为“text()”这样的字符组合,在所有的字符组合中寻找匹配与“text()”相同的字符组合,将所有匹配的字符组合都找到。

将所述代码字符组合中匹配成功的字符组合的位置在所述代码信息中对应的位置进行标记;

在本实施例中,已经匹配成功后的数据将所有匹配的字符组合的位置,将所有位置都写入一个位置清单,该位置清单就是将所述位置标记。在另一种实施例中,可以在输出函数前插入唯一特殊的标识“//*//”然后检索时迅速找到该标识也能将该位置标记。

207、识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件;

208、读取所述第二js文件驱动显示的所述目标页面的特征码;

在本实施例中,读取所述目标页面的特征字符,例如,所述目标页面的特征码为“#**!!123”,并在获得特征码后判断是否存在ajax代码。满足两个要求则认为该所述目标页面已经被成功加载,而且该特征码也是该目标页面的特征码。

209、判断所述特征码是否在所述查询目录中被记录;

在本实施例中,查询目录有很多的特征码例如:“23214wwa”、“ssskdmff“、”sddsa2330”、“#**!!123”这样数据内容,但是目标特征码为“#**!!123”,如果判断存在则说明该特征码被记录,之前也有访问。

210、若是,读取所述历史数据单中所述特征码对应的明文显示数据;在本实施例中,历史数据单中有a、b、c、d、e、f、w1、d1等一些数据簇,而相对应的是特征码分别是“23214wwa”、“ssskdmff“、“sdjdk652”、“sdjdk652”、“sdjdk622””sddsa2330”、“#**!!123”这样对应的映射关系,也存在一对多的数据关系。当查询“#**!!123”的数据映射关系找到在历史数据单中对应的数据簇w1,w1是一系列数据的简称,w1可以是“[root@c65-201~]#qemu-kvm-nameguest01-m128-smp1--drivefile=/images/kvm/guest01.img,if=virtio,media=disk-netnic,model=virtio,macaddr=52:54:00:11:22:aa-nettap,ifname=”这样的数据。

211、若否,加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;

其中具体实现方式可以为:

解析所述第二js文件,得到javascript代码,其中所述javascript代码中内嵌有所述爬取转换代码;

在本实施例中,遍历第二js文件的代码,获得第二js文件的javascript代码中的所有信息。

执行所述javascript代码,并利用程序指针监控所述javascript代码的执行情况;

在本实施例中,将javascript代码进行执行利用内置的指针对形如“varvalues=["volvo","saab","fiat"];varperson={firstname:"john",lastname:"doe",age:50,eyecolor:"blue"。”代码的执行情况进行监控。

若所述执行情况为所述程序指针位于所述爬取转换代码位置时,调用所述浏览器中预设的请求触发程序读取所述爬取转换代码中的网络资源定位符;

在本实施例中,发送资源定位符是用于定位网络资源库。将发送请求发送至网络资源库中,需要确认网络资源库的位置才能发送。完成加载爬取转换代码后,就根据发送资源定位符对数据请求进行发送。在读取爬取转换代码时,可以使用filereader进行读取。在该实施例中,先创建filereader的对象,然后内容处理最后读取文件添加监听事件

解析所述网络资源定位符中的接口路径;

在本实施例中,调用接口服务器后,根据互联网传输协议将数据请求发送到网络数据库中。在发送完成时,返回一个传输成功的响应,函件通知用户终端发送成功。在另一种实施例中,还能使用云端作为传输中转数据请求,先将数据请求发送至云端,然后云端将数据请求发送至网络数据库。

调用所述接口服务器向所述来源数据库发送生成请求;

在本实施例中,解析地址后设定发送请求方式,一般来说为get或者是post。本实施例中采用post的请求方式,在采用post请求方式时,其他操作的请求方式需要保持一致都采用post请求方式。然后调用setdoinput()和setdooutput():函数设定是否需要输出、输入。查询出发送资源定位符的位置,采用对应的接口服务器,生成时间戳。

212、接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据;

213、读取所述第二js文件驱动显示的所述目标页面的特征码;

在本实施例中,读取所述所述目标页面的特征字符,例如,所述目标页面的特征码为“555623!!123”,并在获得特征码后判断是否存在ajax代码。满足两个要求则认为该所述目标页面已经被成功加载,而且该特征码也是该目标页面的特征码。

214、将所述特征码记录至所述浏览器对应本地资源服务器中抓取历史记录日志的查询目录;

在本实施例中,特征码“555623!!123”在查询目录“23214wwa”、“ssskdmff“、“sdjdk652”、“sdjdk652”、“sdjdk622””sddsa2330”、“#**!!123”中进行增添。

215、将所述特征码对应的所述明文显示数据复制进入所述抓取历史记录日志中的历史数据单。

在本实施例中,查询目录新增“555623!!123”特征码,对历史数据单中新增p2对应的数据簇,而数据簇可以是“]#qemu-kvm-nameguest02-m128-smp-drivefile=/images/kvm/guest02.img,if=virtio,media=disk-netnic,model=virtio,macaddr=52:54:00:11:22:bb-nettap,ifname=vif2.0,script=/etc/qemu-ifup”这样的数据内容。在两个数据库中形成新的映射关系,该数据关系在将会在下次检验中作为数据进行查重。

发明实施例中,基于这样的实现方式,通过修改的加载不同网页对应的浏览器上的js文件,再将修改后的js文件对网页进行重新加载运行,由于在修改后的js文件中增加了加解密的代码,限制了再执行js文件获取网页数据时,只有使用同一个加解密方式,从而使不同数据处理的网页之间的数据信息可以通过同一种处理方式被获取到,并且能自动生成数据信息的文件,不需要再进行额外的再处理,使数据处理的数据来源获取更加高效快速。

上面对本发明实施例中网页数据爬取方法进行了描述,下面对本发明实施例中网页数据爬取装置进行描述,请参阅图3,本发明实施例中网页数据爬取装置一个实施例包括:

接收模块301,用于根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件,所述第一js文件用于驱动所述浏览器生成所述目标页面;

读取模块302,用于解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数,其中,所述输出函数用于驱动显示所述目标页面;

增添模块303,用于识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件,其中,所述爬取转换代码用于识别所述目标网页的显示数据的来源数据库和调用所述第二js文件中指定的解密算法;

发送模块304,用于加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;

获取模块305,用于接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。

本发明实施例中,基于这样的实现方式,通过修改的加载不同网页对应的浏览器上的js文件,再将修改后的js文件对网页进行重新加载运行,由于在修改后的js文件中增加了加解密的代码,限制了再执行js文件获取网页数据时,只有使用同一个加解密方式,从而使不同数据处理的网页之间的数据信息可以通过同一种处理方式被获取到,并且能自动生成数据信息的文件,不需要再进行额外的再处理,使数据处理的数据来源获取更加高效快速。

请参阅图4,本发明实施例中网页数据爬取装置的另一个实施例包括:

接收模块401,用于根据接收的目标网页的显示请求抓取待显示所述目标网页的浏览器中的第一js文件,所述第一js文件用于驱动所述浏览器生成所述目标页面;

读取模块402,用于解析所述第一js文件的代码信息,从所述代码信息中查询用于输出显示所述目标网页的数据的输出函数,其中,所述输出函数用于驱动显示所述目标页面;

增添模块403,用于识别所述输出函数中的结果返回指令,在所述结果返回指令的位置上增加爬取转换代码,并编译生成第二js文件,其中,所述爬取转换代码用于识别所述目标网页的显示数据的来源数据库和调用所述第二js文件中指定的解密算法;

发送模块404,用于加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求;

获取模块405,用于接收所述来源数据库基于所述生成请求返回的加密显示数据,并继续加载所述爬取转换代码调用所述解密算法对所述加密显示数据进行解密,得到对应的明文显示数据,以及将所述明文显示数据显示于所述浏览器上。

可选的,所述接收模块401还可以具体用于:解析所述显示请求中携带的所述目标页面的框架文件标识,以及获取所述浏览器的识别码;根据所述框架文件标识和所述识别码,从所述浏览器对应的本地资源服务器查询出对应的第一js文件。

可选的,所述网页数据爬取装置还包括检测模块406,所述检测模块406具体用于:标记所述第一js文件为检测状态,运行所述第一js文件将所述目标页面显示于所述浏览器中,其中,所述检测状态是将所述第一js文件锁定在检测指令中不能执行其他指令;读取所述浏览器中的js事件日志,判断所述js事件日志中是否存在所述输出函数的结果返回指令,其中,所述js事件日志是记录所述浏览器的js文件运行指令的文件;若是,解除所述第一js文件的检测状态;若否,则重新抓取所述第一js文件。

可选的,读取模块402还可以具体用于:对所述代码信息中所有的字符按照从左至右顺序扫描,获得所述代码信息的代码字符组合;将预设的所述输出函数的字符组合与所述代码字符组合进行一致性的匹配;将所述代码字符组合中匹配成功的字符组合的位置在所述代码信息中对应的位置进行标记。

可选的,所述发送模块404包括:

解析单元4041,具体用于解析所述第二js文件,得到javascript代码,其中所述javascript代码中内嵌有所述爬取转换代码;

执行单元4042,具体用于执行所述javascript代码,并利用程序指针监控所述javascript代码的执行情况;

读取单元4043,具体用于若所述执行情况为所述程序指针位于所述爬取转换代码位置时,调用所述浏览器中预设的请求触发程序读取所述爬取转换代码中的网络资源定位符,其中,所述网络资源定位符用于定位所述来源数据库的网络地址;

接口单元4044,具体用于解析所述网络资源定位符中的接口路径,其中,所述接口路径用于确定在所述浏览器中与所述网络资源定位符对应的接口服务器;

调用单元4045,具体用于调用所述接口服务器向所述来源数据库发送生成请求。

可选的,所述网页数据爬取装置还包括验重模块407,所述验重模块407具体用于:读取所述第二js文件驱动显示的所述目标页面的特征码;判断所述特征码是否在所述查询目录中被记录;若是,读取所述历史数据单中所述特征码对应的明文显示数据;若否,进入所述加载所述第二js文件,并在加载到所述爬取转换代码时,向所述来源数据库发送所述目标页面的生成请求的步骤。

可选的,所述网页数据爬取装置还包括记录模块408,所述记录模块408具体用于:读取所述第二js文件驱动显示的所述目标页面的特征码;将所述特征码记录至所述浏览器对应本地资源服务器中抓取历史记录日志的查询目录,其中,所述查询目录是检索特征码的数据库;将所述特征码对应的所述明文显示数据复制进入所述抓取历史记录日志中的历史数据单,其中,所述历史数据单用于存储特征码对应的明文显示数据信息。

本发明实施例中,基于这样的实现方式,通过修改的加载不同网页对应的浏览器上的js文件,再将修改后的js文件对网页进行重新加载运行,由于在修改后的js文件中增加了加解密的代码,限制了再执行js文件获取网页数据时,只有使用同一个加解密方式,从而使不同数据处理的网页之间的数据信息可以通过同一种处理方式被获取到,并且能自动生成数据信息的文件,不需要再进行额外的再处理,使数据处理的数据来源获取更加高效快速。

上面图3和图4从模块化功能实体的角度对本发明实施例中的网页数据爬取装置进行详细描述,下面从硬件处理的角度对本发明实施例中网页数据爬取设备进行详细描述。

图5是本发明实施例提供的一种网页数据爬取设备的结构示意图,该网页数据爬取设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对网页数据爬取设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在网页数据爬取设备500上执行存储介质530中的一系列指令操作。

基于网页数据爬取设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5示出的网页数据爬取设备结构并不构成对基于网页数据爬取设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述网页数据爬取方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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