CN109670100B - 一种页面数据抓取方法及装置 - Google Patents

一种页面数据抓取方法及装置 Download PDF

Info

Publication number
CN109670100B
CN109670100B CN201811572163.1A CN201811572163A CN109670100B CN 109670100 B CN109670100 B CN 109670100B CN 201811572163 A CN201811572163 A CN 201811572163A CN 109670100 B CN109670100 B CN 109670100B
Authority
CN
China
Prior art keywords
page
data
end page
client
page data
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.)
Active
Application number
CN201811572163.1A
Other languages
English (en)
Other versions
CN109670100A (zh
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.)
4Paradigm Beijing Technology Co Ltd
Original Assignee
4Paradigm Beijing 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 4Paradigm Beijing Technology Co Ltd filed Critical 4Paradigm Beijing Technology Co Ltd
Priority to CN201811572163.1A priority Critical patent/CN109670100B/zh
Publication of CN109670100A publication Critical patent/CN109670100A/zh
Application granted granted Critical
Publication of CN109670100B publication Critical patent/CN109670100B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例提供一种页面数据抓取方法及装置,应用于客户端,该方法包括:在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;通过执行所述数据抓取脚本,从所述前端页面抓取页面数据;发送抓取的页面数据。如此,通过客户端执行数据抓取脚本来从前端页面抓取页面数据,能够实现有效地抓取页面数据。

Description

一种页面数据抓取方法及装置
技术领域
本发明实施例涉及互联网信息技术领域,尤其涉及一种页面数据抓取方法及装置。
背景技术
随着互联网信息技术的迅速发展,越来越多的网站随之而生。基于从其他方运营的网站抓取的数据,可进行相应的进一步处理。例如,服务提供方通过抓取合作方的网站的相关数据,并采用大数据、云计算或人工智能等技术对这些相关数据进行分析处理,能够为合作方提供诸如数据分析、智能推荐等数据服务。
目前,主要是预先在网站的服务器上部署网络爬虫,然后由服务器来运行该网络爬虫,通过网络爬虫去访问网站来抓取所需的前端页面的页面数据。这样,在网站运营过程中,一旦爬虫访问频率过高,将对网站服务器造成非常大的压力,甚至会导致网站发生崩溃,使得网络爬虫中断抓取页面数据。
因此,如何快速有效地抓取页面数据,是目前亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种页面数据抓取方法及装置,通过客户端执行数据抓取脚本来从前端页面抓取页面数据,能够有效地抓取页面数据。
为解决上述技术问题,本发明实施例提供如下技术方案:
第一方面,本发明实施例提供一种页面数据抓取方法,应用于客户端,所述方法包括:在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;通过执行所述数据抓取脚本,从所述前端页面抓取页面数据;发送抓取的页面数据。
可选地,所述在访问前端页面的过程中,执行前端页面代码中预先插入的指定代码,包括:在所述前端页面的文本对象模型DOM树创建后,执行前端页面代码中预先插入的指定代码;和/或,在所述前端页面中的页面元素加载完成后,执行前端页面代码中预先插入的指定代码;和/或,在所述前端页面渲染完成后,执行前端页面代码中预先插入的指定代码。
可选地,所述发送抓取的页面数据,包括:将抓取的页面数据发送至所述服务器。
可选地,所述通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本,包括:通过执行所述指定代码,向所述服务器发送用于请求下发所述数据抓取脚本的脚本获取请求,其中,所述脚本获取请求中携带所述数据抓取脚本的统一资源定位符URL;从所述服务器接收所述数据抓取脚本。
可选地,所述从所述前端页面抓取页面数据,包括:获取关于所述前端页面的抓取配置项,其中,所述抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件;至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据;如果允许抓取,则从所述前端页面抓取页面数据。
可选地,所述抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则;所述从所述前端页面抓取页面数据,包括:根据所述数据抓取规则,从所述前端页面抓取页面数据。
可选地,所述抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则;所述至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据,包括:确定所述前端页面的网址是否符合所述网址正则表达式规则;如果符合,则确定允许抓取所述前端页面的页面数据;否则,确定不允许抓取所述前端页面的页面数据。
可选地,所述至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据,包括:确定所述前端页面是否符合所述抓取约束条件;如果符合,则将所述前端页面的网址发送至所述服务器,以使所述服务器根据所述前端页面的网址来判定是否允许抓取所述前端页面的页面数据;若接收到来自所述服务器的表示允许进行页面数据抓取的判定结果,确定允许抓取所述前端页面的页面数据。
可选地,所述至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据,包括:确定所述前端页面是否符合所述抓取约束条件;如果符合,则从所述前端页面抓取满足预设条件的部分页面数据,并将所述前端页面的网址以及所述部分页面数据发送给所述服务器,以使所述服务器根据所述前端页面的网址和所述部分页面数据来判定是否允许抓取所述前端页面的页面数据;接收所述服务器发送的判定结果;根据所述判定结果,确定是否允许抓取所述前端页面的页面数据。
可选地,所述从所述前端页面抓取满足预设条件的部分页面数据,并将所述前端页面的网址以及所述部分页面数据发送给所述服务器,包括:按照所述预设条件,从所述前端页面抓取所述部分页面数据;对所述部分页面数据进行加密处理和/或压缩处理,得到处理结果;将所述前端页面的网址以及所述处理结果发送给所述服务器。
可选地,所述对所述部分页面数据进行加密处理和/或压缩处理,得到处理结果,包括:利用哈希函数对所述部分页面数据进行加密处理和压缩处理,得到作为所述处理结果的哈希值。
可选地,所述获取关于所述前端页面的抓取配置项,包括:从所述前端页面的网址中,提取所述前端页面的标识信息,其中,所述标识信息为所述前端页面的域名、所述前端页面对应的网站的域名中的至少一个;向所述服务器发送用于请求所述服务器下发所述抓取配置项的配置获取请求,其中,所述配置获取请求中携带所述标识信息,或者,所述配置获取请求中携带所述标识信息和所述指定代码所传入的校验信息,所述校验信息用于所述服务器校验所述配置获取请求的安全性;接收来自所述服务器的所述抓取配置项。
可选地,所述向所述服务器发送用于请求所述服务器下发所述抓取配置项的配置获取请求,包括:确定本地存储空间中是否存在与所述标识信息对应的抓取配置项;如果不存在,则向所述服务器发送所述配置获取请求;在所述接收来自所述服务器的所述抓取配置项之后,所述方法还包括:将所述抓取配置项与所述标识信息对应地存储至所述本地存储空间中。
可选地,所述方法还包括:如果存在,计算所述本地存储空间中所存在的与所述标识信息对应的抓取配置项的更新时间与当前时间之间的间隔时长;判断所述间隔时长是否超过预设数据失效时长;若所述间隔时长超过所述预设数据失效时长,向所述服务器发送所述配置获取请求;否则,将所述本地存储空间中所存在的与所述标识信息对应的抓取配置项确定为关于所述前端页面的抓取配置项。
第二方面,本发明实施例提供一种页面数据抓取方法,应用于服务器,所述方法包括:接收客户端在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码所发送的脚本获取请求,其中,所述脚本获取请求中携带数据抓取脚本的统一资源定位符URL,用于请求下发所述数据抓取脚本;响应所述脚本获取请求,基于所述URL,获取所述数据抓取脚本;向所述客户端发送所述数据抓取脚本,以使所述客户端通过执行所述数据抓取脚本来从所述前端页面抓取页面数据。
可选地,在所述向所述客户端发送所述数据抓取脚本之后,所述方法还包括:接收并存储所述客户端发送的从所述前端页面所抓取的页面数据。
可选地,在所述向所述客户端发送所述数据抓取脚本之后,所述方法还包括:接收所述客户端发送的所述前端页面的网址;确定数据库所存储的已抓取网址中是否存在所述前端页面的网址,其中,所述数据库用于存储已抓取的页面数据及其对应的前端页面的网址;如果不存在所述前端页面的网址,向所述客户端发送表示允许进行页面数据抓取的判定结果;否则,向所述客户端发送表示不允许进行页面数据抓取的判定结果。
可选地,在所述向所述客户端发送所述数据抓取脚本之后,所述方法还包括:接收所述客户端发送的所述前端页面的网址以及从所述前端页面抓取的满足预设条件的部分页面数据;确定在数据库所存储的已抓取网址中是否存在所述前端页面的网址,其中,所述数据库用于存储已抓取的页面数据及其对应的前端页面的网址;如果存在所述前端页面的网址,确定所述数据库中所存储的与所述前端页面的网址对应的已抓取的页面数据中是否存在所述部分页面数据;如果不存在所述部分页面数据,向所述客户端发送表示允许进行页面数据抓取的判定结果;否则,向所述客户端发送表示不允许进行页面数据抓取的判定结果,以使所述客户端根据所述判定结果来确定是否允许抓取所述前端页面的页面数据。
可选地,所述接收所述客户端发送的所述前端页面的网址以及从所述前端页面抓取的满足预设条件的部分页面数据,包括:接收所述客户端发送的所述前端页面的网址以及处理结果,其中,所述处理结果由所述客户端对所述部分页面数据进行加密处理和/或压缩处理所得到;所述确定所述数据库中存储的与所述前端页面的网址对应的已抓取的页面数据中是否存在所述部分页面数据,包括:从所述数据库中存储的与所述前端页面的网址对应的已抓取的页面数据中,获取满足所述预设条件的目标数据;对所述目标数据进行加密和/或压缩处理,得到处理后的目标数据;确定所述处理后的目标数据与所述处理结果是否相同;如果不相同,确定不存在所述部分页面数据;如果相同,确定存在所述部分页面数据。
可选地,所述处理结果为所述客户端利用哈希函数对所述部分页面数据进行加密处理和压缩处理所得到的哈希值;所述对所述目标数据进行加密和/或压缩处理,得到处理后的目标数据,包括:利用哈希函数对所述目标数据进行加密和/或压缩处理,得到作为所述处理后的目标数据的哈希值。
可选地,在所述向所述客户端发送所述数据抓取脚本之后,所述方法还包括:接收所述客户端发送的用于请求下发关于所述前端页面的抓取配置项的配置获取请求,其中,所述抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件,所述配置获取请求中携带所述前端页面对应的标识信息,所述标识信息为所述前端页面的域名、所述前端页面对应的网站的域名中的至少一个;响应所述配置获取请求,基于所述标识信息,获取所述抓取配置项;将所述抓取配置项发送给所述客户端,以使所述客户端至少基于所述前端页面是否符合所述抓取约束条件来确定是否允许抓取所述前端页面的页面数据。
可选地,所述抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则,以使所述客户端根据所述数据抓取规则来从所述前端页面抓取数据。
可选地,所述抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则,以使所述客户端根据所述前端页面的网址是否符合所述网址正则表达式规则来确定是否允许抓取所述前端页面的页面数据。
可选地,所述配置获取请求中还携带有所述指定代码所传入的校验信息,其中,所述指定代码所传入的校验信息用于校验所述配置获取请求的安全性;所述基于所述标识信息,获取所述抓取配置项,包括:基于预先存储的域名与校验信息之间的映射关系,确定所述标识信息对应的校验信息;确定所述标识信息对应的校验信息与所述指定代码所传入的校验信息是否相同;如果相同,则基于所述标识信息,获取所述抓取配置项。
第三方面,本发明实施例提供一种页面数据抓取装置,应用于客户端,所述装置包括:第一执行单元,用于在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;第二执行单元,用于通过执行所述数据抓取脚本,从所述前端页面抓取页面数据;第一发送单元,用于发送抓取的页面数据。
第四方面,本发明实施例提供一种页面数据抓取装置,应用于服务器,所述装置包括:第一接收单元,用于接收客户端在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码所发送的脚本获取请求,其中,所述脚本获取请求中携带数据抓取脚本的统一资源定位符URL,用于请求下发所述数据抓取脚本;第一响应单元,用于响应所述脚本获取请求,基于所述URL,获取所述数据抓取脚本;第一发送单元,用于向所述客户端发送所述数据抓取脚本,以使所述客户端通过执行所述数据抓取脚本来从所述前端页面抓取页面数据。
第五方面,本发明实施例提供一种计算机可读存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述页面数据抓取方法的步骤。
第六方面,本发明实施例提供一种电子设备,所述电子设备包括:至少一个处理器;以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述页面数据抓取方法的步骤。
本发明实施例提供的页面数据抓取方法及装置,在客户端访问前端页面的过程中,客户端能够通过执行前端页面代码中预先插入的指定代码,从服务器中获取到预设的数据抓取脚本;接下来,客户端就可以通过执行数据抓取脚本来从前端页面抓取页面数据;最后,在得到抓取的页面数据后,客户端就可以发送该抓取的页面数据,以便进行数据的后续处理或存储。这样,由于是由客户端通过数据抓取脚本来从前端页面抓取页面数据的,那么,客户端就可以使用访问该前端页面时客户端所得到的响应数据来抓取,也就是说,无需客户端重复向网站服务器发起访问该前端页面的请求,因此,合作方的网站只用承载正常访问压力,无需额外承担数据抓取脚本访问压力,从而,降低了网站服务器压力,大大避免了网站发生崩溃,也避免了中断抓取页面数据,进而能够实现既快速又有效地抓取页面数据。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例中的页面数据抓取方法的流程示意图一;
图2为本发明实施例中的页面数据抓取方法的流程示意图二;
图3为本发明实施例中的页面数据抓取装置的结构示意图一;
图4为本发明实施例中的页面数据抓取装置的结构示意图二;
图5为本发明实施例中的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
为了给合作方提供如网站运营情况分析、数据分析、智能推荐等数据服务,服务提供方往往需要抓取该合作方的网站的相关数据来进行分析处理。在相关技术中,服务提供方主要是预先在合作方的服务器上部署网络爬虫,然后通过服务器运行网络爬虫,通过网络爬虫去访问合作方的网站来抓取所需的前端页面的页面数据。但是,本发明的发明人发现使用服务器端的网络爬虫抓取页面数据,往往容易存在以下问题:
首先,在网站运营过程中,合作方的网站服务器在承载着用户正常访问所产生的压力的同时,还需要额外承担网络爬虫访问所产生的压力,这样,一旦爬虫访问频率过高,将会对网站服务器造成非常大的压力,甚至可能导致网站发生崩溃,进而导致网络爬虫中断抓取页面数据。
其次,由于大多数网站的安全性设置,使得网络爬虫无法使用单一IP(InternetProtocol,网际协议)地址或重复IP地址高频次地访问同一个网站,从而就需要维护一个代理IP池,这样,不但在开发过程中需要对代理IP池进行额外的开发,而且在使用过程中极其容易造成代理IP池枯竭,进而还是会导致网络爬虫中断抓取页面数据。
再次,随着互联网的发展,使用JavaScrip、AJAX(Asynchronous Javascript AndXML,异步JavaScript和XML)等技术的动态类型的网站也越来越多,而对于动态类型的网站来说,网络爬虫只能抓取前端页面对应的静态数据,但是无法抓取客户端通过JavaScrip、AJAX等技术所请求到的需要动态渲染到前端页面上的数据,这样,就会导致所抓取的页面数据不够全面。
然后,对于设置了“登录可查看全文”、“对部分人可见”等功能的网站来说,为了抓取这些需要登录才可见的前端页面的页面数据,就需要额外维护一个账号池或cookies池,以便网络爬虫获取账号来进行模拟用户登录等操作,而且由于不同网站间的差异性,会导致这部分功能几乎无法复用,还会带来极高的开发工作量。
最后,一般来说,前端页面中的代码、符号、编码格式等内容并不是用于直接显示给用户的,而是用来让客户端进行解释执行并在客户端解释执行过后才是最终显示给用户的页面数据,由于一般的网络爬虫是不具有解释执行这部分数据的功能的,那么,这就导致了网络爬虫可能无法完全理解前端页面中的部分内容,从而,使得网络爬虫直接抓取到的数据为无用的脏数据。这样,为了避免脏数据进入存储空间,就需要额外给网络爬虫开发一个功能,以使网络爬虫能够模拟客户端去阅读这部分内容,这也会带来极高的开发工作量。
另外,在网络爬虫抓取页面数据的过程中,出现了上述任意一个问题都有可能导致大量的脏数据进入了存储空间,此时,为了保证数据的完整性和正确性,还需要额外进行庞杂的数据清洗工作,这也会带来极高的工作量。
由上述内容可知,通过服务器端的网络爬虫抓取页面数据存在缺陷,因此,为了克服这样的问题,本发明实施例提供了一种页面数据抓取方法,该页面数据抓取方法可以应用于页面数据抓取系统,该页面数据抓取系统可以包括:客户端以及服务器,其中,客户端与服务器之间可以通过网络进行数据通信。
这里,客户端用于在访问前端页面的过程中,通过执行数据抓取脚本来抓取页面数据;还用于将抓取到的页面数据发送给用于进行数据后续处理或存储的其他设备(例如,数据存储设备)。
具体来说,客户端可以由能够访问网站的前端页面的电子设备来实现。在实际应用中,上述电子设备可以以各种形式来实施。例如,本发明实施例中描述的电子设备可以包括诸如手机、平板电脑、笔记本电脑、电子书阅读器、掌上电脑、个人数字助理(PersonalDigital Assistant,PDA)、导航装置、可穿戴设备、便携式电脑等移动终端,以及诸如智能电视、台式计算机等固定终端。这里,本发明实施例不做具体限定。
在实际应用中,根据在同一时间访问前端页面的用户的数量的不同,上述客户端的数量可以为一个或多个。举例来说,当一个用户访问前端页面时,上述客户端的数量就是一个;而当多个不同用户同时访问前端页面时,上述客户端的数量就是多个。
这里,服务器用于向客户端提供与抓取页面数据相关的服务支持。在具体实施过程中,服务器可以向客户端下发用于抓取页面数据的数据抓取脚本,也可以向客户端下发诸如用于表示允许进行页面数据抓取的抓取约束条件、用于指示如何进行页面数据抓取的数据抓取规则、用于指示如何进行清洗页面数据的数据清洗策略等抓取配置项,还可以向客户端下发用于表示允许或不允许进行页面数据抓取的判定结果。当然,服务器还可以向客户端提供其它服务支持,例如,在客户端抓取到页面数据后,服务器可以向客户端提供数据存储服务。这里,本发明实施例不做具体限定。
在具体实施过程中,根据服务器所属的拥有者的不同,上述服务器可以通过服务提供方的服务器端设备来实现,也可以通过该合作方的服务器端设备来实现,如被抓取的前端页面所对应的网站方的服务器,当然,还可以通过其它服务器端设备,如第三方的服务器来实现。可由本领域技术人员根据实际应用情况来自行选择,这里,本发明实施例不做具体限定。
在实际应用中,作为示例,可由服务提供方来对数据抓取脚本以及诸如抓取约束条件、数据抓取规则、数据清洗策略等抓取配置项等服务支持进行维护和更新,那么,为了便于维护和更新这些服务支持,可将上述系统中的服务器设置为服务提供方所提供的服务器。
在实际应用中,根据服务器所能提供的功能的不同,上述服务器的数量可以为一个或多个,如两个、三个等。举例来说,上述服务器可以包括用于下发数据抓取脚本的服务器、用于下发抓取配置项的服务器、用于存储客户端所抓取的页面数据的服务器这三种服务器,上述服务器也可以是同时具有上述三种功能的服务器。
下面结合上述页面数据抓取系统,对本发明实施例所提供的页面数据抓取方法进行说明。
图1为本发明实施例中的页面数据抓取方法的流程示意图一,参见图1所示,上述页面数据抓取方法可以包括:
S101:客户端在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;
具体来说,在诸如用户通过客户端访问前端页面、客户端在跟用户进行交互的过程中自行访问前端页面等客户端访问前端页面的过程中,客户端可以从该前端页面对应的网站服务器上获取到该前端页面对应的前端页面代码,接下来,为了能够抓取该前端页面的页面数据,客户端就会通过执行该前端页面代码中的指定代码,来从服务器中获取到所需的数据抓取脚本。
在实际应用中,合作方的网站上往往会部署海量的前端页面,也就是说,需要抓取页面数据的前端页面的数量是非常多的。这样,如果直接让合作方在部署前端页面之前,事先将数据抓取脚本直接写在每个前端页面对应的前端页面代码中,一方面,需要重复编写很多次数据抓取脚本的代码,而且还会导致前端页面代码变得非常复杂和臃肿,不利于合作方对前端页面进行维护和更新,往往会造成前端页面开发效率低下,另一方面,在服务提供方对数据抓取脚本进行更新优化时,就需要合作方将所有部署了数据抓取脚本的前端页面重新进行开发,无形当中会给合作方带来很多额外的工作量。因此,为了避免在海量的前端页面中重复编写很多相同的数据抓取脚本代码,便于后续对数据抓取脚本进行维护和更新,可由服务提供方创建一个单独的数据抓取脚本并存储在服务器中,在客户端访问前端页面的时候,直接通过前端页面代码中的指定代码来从服务器中获取到该数据抓取脚本即可。这样,合作方只需要在前端页面代码中,填写几句由服务提供方预先提供的指定代码即可,后续不需要合作方额外进行开发。
具体来说,上述数据抓取脚本主要是指通过脚本语言编写的用于抓取页面数据的脚本文件。在实际应用中,可以使用诸如JavaScript、Scala、VBScript、ActionScript、CrawlScript、ASP、JSP、PHP、Perl、Shell、Python等脚本语言来编写该数据抓取脚本。这里,本发明实施例不做具体限定。
具体来说,上述指定代码主要是指能够插入在前端页面代码中的,用于从服务器中获取到预设的数据抓取脚本的代码。此外,为了保证数据安全,以将合法的合作方与非法者区别开,或者,当服务提供方与多个合作方进行合作,为了避免后续数据存储之间发生混乱,合作方还可通过上述指定代码向客户端传递校验信息并经由客户端传递给服务提供方的服务器,例如能够唯一标识合作方的标识信息。
举例来说,以前端页面代码是通过HTML(HyperText Markup Language,超级文本标记语言)来实现的为例,那么,数据抓取脚本就可以通过JavaScript脚本语言来实现,从而,上述指定代码就可以通过HTML中所提供的<script>标签及其对应的src属性来实现。
示例性地,假设数据抓取脚本对应的URL(Uniform Resource Locator,统一资源定位符)为www.4paradigm.com/grabdata.js,此时,指定代码就可以通过语句<script src="www.4paradigm.com/grabdata.js"></script>来实现。
在具体实施过程中,根据所需抓取的页面数据的不同,客户端执行前端页面代码中预先插入的指定代码的时机也可以是不同的,那么,上述S101可以采用但不限于以下三种方法来实现。
第一种实现方法,客户端在前端页面的DOM(Document Object Model,文本对象模型)树创建后,执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本。
举例来说,为了实现客户端在前端页面的DOM树创建后执行指定代码,可以将指定代码放在前端页面代码中用于构建DOM树的实现代码之后,也可以使用语句$(document).ready(function(){})来实现,其中,function()为指定代码。当然,还可以通过其它方式来实现,如设定延时执行或者异步执行。这里,本发明实施例不做具体限定。
第二种实现方法,客户端在前端页面中的页面元素加载完成后,执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本。
举例来说,为了实现客户端在前端页面中的页面元素加载完成后执行指定代码,可以将指定代码放在前端页面代码中用于加载页面元素的实现代码之后,例如,将指定代码写在前端页面代码中<body>标签内最靠后的位置,也可以通过语句$(window).load(function(){})来实现。当然,还可以通过其它方式来实现,例如通过语句indow.onload=function(){}、<body onload="function(){}"></body>等来实现、设定延时执行或者异步执行等。这里,本发明实施例不做具体限定。
第三种实现方法,客户端在前端页面渲染完成后,执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本。
具体来说,为了更全面地抓取页面数据,例如对于动态类型的网站来说,需要抓取动态渲染到前端页面上的数据,或者,对于设置了“登录可查看全文”、“对部分人可见”等功能的网站来说,为了抓取这些需要登录才可见的页面数据,可以将客户端执行指定代码的时机设置为:在前端页面渲染完成后执行指定代码。
举例来说,为了实现客户端在前端页面渲染完成后执行指定代码,可以将指定代码放在前端页面代码中的用于渲染页面的实现代码之后,例如,将指定代码写在前端页面代码的末尾,也可以设定延时执行,如预先设置一个预设时长,在距离客户端<body>标签内的代码全部执行完毕间隔预设时长后,执行该指定代码。当然,还可以通过其它方式来实现,如设定异步执行。这里,本发明实施例不做具体限定。
当然,客户端执行前端页面代码中预先插入的指定代码的时机,除了采用上述所列出的三种情况外,还可以为其它。那么,上述S101除了采用上述所列出的三种实现方法外,还可以采用其它实现方法,例如上述多种实现方法的组合。可由本领域技术人员在具体实施过程中根据实际需要来自行设定,这里,本发明实施例不做具体限定。
S102:客户端通过执行数据抓取脚本,从前端页面抓取页面数据;
在本发明另一实施例中,为了避免抓取到冗余数据,并避免脏数据进入存储空间,在客户端抓取页面数据之前,客户端就需要先确定是否有必要抓取其当前访问的前端页面的页面数据。那么,在具体实施过程中,上述S102可以包括以下步骤A1~A3:
步骤A1:客户端获取关于前端页面的抓取配置项;
其中,抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件。
步骤A2:客户端至少基于前端页面是否符合抓取约束条件,确定是否允许抓取前端页面的页面数据;
步骤A3:如果允许抓取,则客户端从前端页面抓取页面数据。
具体来说,在客户端从服务器获取到数据抓取脚本后,客户端就能够执行该数据抓取脚本来获取到关于客户端当前访问的前端页面的抓取配置项,接下来,客户端可以至少根据该前端页面是否符合抓取配置项中所包含的抓取约束条件,确定是否允许抓取前端页面的页面数据。若确定允许抓取该前端页面的页面数据,则表明该前端页面为待抓取的目标页面,有必要抓取该前端页面的页面数据,此时,客户端就可以从该前端页面抓取页面数据。
此外,为了避免浪费系统资源,若确定不允许抓取该前端页面的页面数据,表明没必要抓取该前端页面的页面数据,此时,客户端就可以停止执行该数据抓取脚本。
首先,对客户端如何获取抓取配置项进行说明。
在本发明其它实施例中,当抓取配置项是由服务器来下发的时,上述步骤A1可以包括以下步骤B1~B3:
步骤B1:客户端从前端页面的网址中,提取前端页面的标识信息;
步骤B2:客户端向服务器发送用于请求服务器下发抓取配置项的配置获取请求;
步骤B3:客户端接收来自服务器的抓取配置项。
这里,配置获取请求中可以携带标识信息,或者,配置获取请求中可以同时携带标识信息以及指定代码所传入的校验信息。其中,标识信息为前端页面的域名、前端页面对应的网站的域名中的至少一个,校验信息用于服务器校验配置获取请求的安全性。
在实际应用中,当上述数据抓取脚本以JavaScript脚本语言来实现时,上述配置获取请求可以通过AJAX请求来实现。示例性地,可以使用AJAX技术中的XMLHttpRequest请求来实现。
在实际应用中,为了让服务器能够准确找到关于该前端页面的抓取配置项,并向客户端发送该抓取配置项,当前端页面所属的网站包含有多个频道时,由于各个频道的域名之间往往是不相同的,从而,不同的频道可能会对应不同的抓取配置项,例如娱乐频道和音乐频道就可以对应不同的抓取配置项,那么,客户端就需要通过配置获取请求向服务器发送该前端页面的域名。而当前端页面对应的网站未分为多个频道,或者,当前端页面对应的网站包括多个频道但是服务器是以网站为单位来设置抓取配置项时,那么,客户端就可以通过配置获取请求向服务器发送前端页面的域名、前端页面对应的网站的域名中的至少一个。
在实际应用中,由于服务器接口可能不稳定,有时候无法实时根据客户端的请求来向客户端下发抓取配置项,因此,为了让客户端在无法获取到抓取配置项的情况下也有可用的抓取配置项、为了减少向服务器发送配置获取请求的次数或者为了更快速地获取到抓取配置项,客户端就可以在第一次获得抓取配置项时,将该抓取配置项存储于客户端对应的本地存储空间中,以备不时之需。那么,在具体实施过程中,客户端在从服务器获取抓取配置项之前,可以先从该客户端对应的本地存储空间中查找是否存在其所需的抓取配置项,如果存在的话,就可以直接从本地存储空间中来读取到,而无需请求服务器下发;如果不存在的话,才需要请求服务器下发抓取配置项,此时,客户端再向服务器发送配置获取请求,以请求服务器下发该抓取配置项即可。那么,上述步骤B2可以包括:客户端确定本地存储空间中是否存在与标识信息对应的抓取配置项;如果不存在,则客户端向服务器发送配置获取请求。
进一步地,如果客户端对应的本地存储空间中没有存储该抓取配置项,在客户端接收到服务器所发送的抓取配置项后,为了便于后续快速获取到抓取配置项,客户端可以将所接收到的抓取配置项在本地存储空间中备份一份。那么,在步骤B3之后,上述方法还可以包括:客户端将抓取配置项与标识信息对应地存储至本地存储空间中。
此外,由于互联网中的用户群体是非常庞大的,为了避免抓取到冗余数据,抓取配置项往往是需要及时更新的,不能让客户端一直使用历史抓取配置项。因此,需要为存储在客户端对应的本地存储空间中的抓取配置项设置定时失效,即设定本地存储空间中的抓取配置项在存储一定时间后就变成无效的抓取配置项,不能让客户端使用。那么,在本发明另一实施例中,当客户端确定本地存储空间中存储有其所需的抓取配置项时,上述方法还可以包括:如果客户端确定本地存储空间中存在与标识信息对应的抓取配置项,客户端计算本地存储空间中所存在的与标识信息对应的抓取配置项的更新时间与当前时间之间的间隔时长;客户端判断间隔时长是否超过预设数据失效时长;若间隔时长超过预设数据失效时长,客户端向服务器发送配置获取请求;否则,客户端将本地存储空间中所存在的与标识信息对应的抓取配置项确定为关于前端页面的抓取配置项。
其次,对客户端如何确定是否允许抓取前端页面的页面数据进行说明。
在具体实施过程中,当抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则时,上述步骤A2可以包括:客户端确定前端页面的网址是否符合网址正则表达式规则;如果符合,则客户端确定允许抓取前端页面的页面数据;否则,客户端确定不允许抓取前端页面的页面数据。
在实际应用中,对于允许抓取的页面数据的前端页面而言,常常会出现多个用户均可能访问该前端页面的情况,这样,在该前端页面的页面数据未发生变化时,通常只需要通过第一个访问该前端页面的客户端来抓取该前端页面的页面数据即可,无需每次一有客户端访问该前端页面,都去抓取页面数据。因此,在本发明其它实施例中,为了避免重复抓取页面数据,上述步骤A2可以采用但不局限于以下方法来实现。
第一种实现方式,客户端将前端页面的网址发送给服务器,以使服务器根据该前端页面的网址确定该前端页面的页面数据是否已经抓取过,并生成对应的判定结果,再根据服务器发送给客户端的判定结果,来确定是否有必要抓取该前端页面的页面数据。
在具体实施过程中,上述步骤A2可以包括以下步骤C1~C4:
步骤C1:客户端确定前端页面是否符合抓取约束条件;
步骤C2:如果符合,则客户端将前端页面的网址发送至服务器,以使服务器根据前端页面的网址来判定是否允许抓取前端页面的页面数据;
步骤C3:客户端接收服务器发送的判定结果;
步骤C4:客户端根据判定结果,确定是否允许抓取前端页面的页面数据。
具体来说,若客户端接收到来自服务器的表示允许进行页面数据抓取的判定结果,则客户端可以确定允许抓取前端页面的页面数据,此时,客户端就可以从前端页面抓取页面数据。若客户端接收到来自服务器的表示不允许进行页面数据抓取的判定结果,则客户端确定不允许抓取前端页面的页面数据,此时,客户端无需抓取该前端页面的页面数据,就可以停止执行数据抓取脚本。
第二种实现方式,客户端将前端页面的网址和前端页面中的具有代表性的部分页面数据发送给服务器,以使服务器先根据该前端页面的网址确定该前端页面的页面数据是否已经抓取过,若已经抓取过,再根据该部分页面数据确定该前端页面的页面数据是否发生变化,并生成对应的判定结果,再根据服务器发送给客户端的判定结果,来确定是否有必要抓取该前端页面的页面数据。
在具体实施过程中,上述步骤A2可以包括以下步骤D1~D4:
步骤D1:客户端确定前端页面是否符合抓取约束条件;
步骤D2:如果符合,则客户端从前端页面抓取满足预设条件的部分页面数据,并将前端页面的网址以及部分页面数据发送给服务器,以使服务器根据前端页面的网址和部分页面数据来判定是否允许抓取前端页面的页面数据;
步骤D3:客户端接收服务器发送的判定结果;
步骤D4:客户端根据判定结果,确定是否允许抓取前端页面的页面数据。
这里,预设条件可与服务器事先约定,相应地,满足预设条件的部分页面数据是指前端页面的页面数据中能够至少在一定程度上表征该前端页面的一部分数据。示例性地,预设条件可以设置为前端页面的网页正文中的前N个字,如前30个字,也可以设置为该前端页面对应的网页标题,当然,还可以设置为其它,如预设条件可以设置为网页正文第一段文字、网页正文作者及发布时间等等。这里,本发明实施例不做具体限定。
在具体实施过程中,上述步骤D2可以包括:按照预设条件,从前端页面抓取部分页面数据;对部分页面数据进行加密处理和/或压缩处理,得到处理结果;将前端页面的网址以及处理结果发送给服务器。
具体来说,为了安全和/或快速向服务器传输部分页面数据,在客户端抓取到满足预设条件的部分页面数据时,客户端可以先将部分页面数据加密和/或压缩,再将所得到的处理结果连同该前端页面的网址一起发送给服务器。
此外,为了便于与服务器进行数据通信,客户端可以在向服务器发送前端页面的网址以及处理结果时,根据与服务器事先约定的数据格式,将前端页面的网址以及处理结果进行结构化处理,然后,再将结构化处理后的数据发送给服务器。示例性地,上述数据格式可以为JSON(JavaScript Object Notation,JS对象简谱)格式。
在实际应用中,当客户端采用哈希函数来实现加密和/或压缩处理时,上述对部分页面数据进行加密处理和/或压缩处理,得到处理结果的步骤可以包括:客户端利用哈希函数对部分页面数据进行加密处理和压缩处理,得到作为处理结果的哈希值。
示例性地,上述哈希函数可以由MD5(Message-Digest Algorithm 5,信息-摘要算法)、SHA(Secure Hash Algorithm,安全哈希算法)、RIPEMD(RACE Integrity PrimitivesEvaluation Message Digest,RACE原始完整性校验讯息摘要)等来实现,这里,本发明实施例不做具体限定。
具体来说,在第二种实现方式中,对于步骤D4而言,客户端根据服务器发送的判定结果,确定是否允许抓取前端页面的页面数据的方法,与上述第一种实现方式中的步骤C4是相同的,这里不再赘述。
当然,除了上述所列出的两种实现方式外,还可以通过其它方法来实现。这里,本发明实施例不做具体限定。
最后,介绍客户端如何从前端页面抓取页面数据。
在本发明其它实施例中,为了向客户端明确指示如何从前端页面的所有数据中抓取所需的页面数据,上述抓取配置项还可以包括用于指示如何进行页面数据抓取的数据抓取规则,此时,上述步骤A3可以包括:根据数据抓取规则,从前端页面抓取页面数据。
在实际应用中,当前端页面是通过HTML来实现的时,上述数据抓取规则可以是通过HTML标签或者HTML标签的属性来设置。
举例来说,上述数据抓取规则可以设置为抓取前端页面中的正文数据,也可以设置为去掉前端页面中的链接数据,当然,还可以设置为其它,如去掉前端页面中的广告数据、去掉前端页面中的版权声明数据等。由本领域技术人员根据实际需要来设定,这里,本发明实施例不做具体限定。
S103:客户端发送抓取的页面数据。
这里,客户端可将抓取的页面数据发送给任意能够进行后续存储和/或处理的实体。
作为示例,为了实现数据持久化存储,在客户端抓取到前端页面的页面数据后,客户端可以将所抓取的页面数据发送给数据存储设备。
在实际应用中,由于往往需要对抓取的海量前端页面数据进行后续的处理,因此,通常会使用服务器端设备来接收抓取的数据以进行进一步的处理。示例性地,上述服务器端设备可以通过服务提供方的服务器端设备来实现,也可以通过该合作方的服务器端设备来实现,如被抓取的前端页面所对应的网站侧的服务器,当然,还可以为其它,如第三方的服务器、用于提供存储服务的云服务器、上述多种服务器端设备的组合等。可由本领域技术人员根据实际需要来设定,这里,本发明实施例不做具体限定。
至此,便完成了通过客户端运行数据抓取脚本来从前端页面抓取页面数据的过程。
这样,由于是由客户端通过数据抓取脚本来从前端页面抓取页面数据的,那么,就可以实现如下有益效果之中的至少一项:
首先,客户端可以使用访问该前端页面时客户端所得到的响应数据来抓取,也就是说,无需客户端重复向网站服务器发起访问该前端页面的请求,因此,合作方的网站只用承载正常访问压力,无需额外承担数据抓取脚本访问压力,从而,降低了网站服务器压力,大大避免了网站发生崩溃,也避免了中断抓取页面数据。
其次,客户端所得到的前端页面的页面数据是通过用户所使用的客户端的IP得到的,而在实际应用中,各个用户的客户端IP是不相同的,从而,不存在单一IP的问题,也就不需要使用代理IP池的问题,只要客户端可以继续访问前端页面,就可以继续抓取页面数据。
再次,对于动态类型的页面数据、或者、需要进行解释执行的代码、符号、编码格式等部分数据来说,客户端能够对这部分页面数据进行解释执行,在将其呈现给用户的同时,也将其呈现给了数据抓取脚本,这样,数据抓取脚本无需模拟前端解释器行为,就可以抓取到所需的页面数据。
然后,所有的账号体系、内容访问权限等完全交给用户管理,数据抓取脚本中不再需要关注这些,在用户使用客户端访问前端页面的过程中,客户端可以使用用户的用户账户来进行登录,无需额外维护账号池或cookies池,也无需数据抓取脚本模拟用户登录等操作,客户端就可以通过数据抓取脚本抓取到所需的页面数据。
最后,在用户使用客户端访问前端页面的过程中,每个用户所使用的客户端就会成为一个分布式节点,从而形成一个大型的分布式页面数据抓取系统,这意味着,即使一个网站的受众中,大部分的用户没有登录习惯或没有完整数据访问权限,只要个别有权限用户的登录并访问成功过,客户端也是能够抓取到那些需要访问权限或需要登录才能抓取到的页面数据,从而,能够实现更全面地抓取页面数据。
那么,由上述内容可知,本发明实施例所提供的页面数据抓取方法,在客户端访问前端页面的过程中,客户端能够通过执行前端页面代码中预先插入的指定代码,从服务器中获取到预设的数据抓取脚本;接下来,客户端就可以通过执行数据抓取脚本,从前端页面抓取页面数据;最后,在得到抓取的页面数据后,就可以发送该抓取的页面数据以进行后续的存储和/或处理。这样,由于是由客户端通过数据抓取脚本来从前端页面抓取页面数据的,能够实现既快速又有效地抓取页面数据。
基于同一发明构思,本发明实施例还提供了一种页面数据抓取方法,该页面数据抓取方法可以应用于上述页面数据抓取系统。图2为本发明实施例中的页面数据抓取方法的流程示意图二,参见图2所示,上述页面数据抓取方法可以包括:
S201:客户端在访问前端页面的过程中,通过执行指定代码,向服务器发送用于请求下发数据抓取脚本的脚本获取请求;
这里,脚本获取请求用于请求服务器下发数据抓取脚本,该脚本获取请求中携带数据抓取脚本的URL。其中,数据抓取脚本的URL用于指示数据抓取脚本在服务器上的地址,是服务器定位数据抓取脚本的位置的一个描述。
S202:服务器响应脚本获取请求,基于URL,获取数据抓取脚本;
S203:服务器向客户端发送数据抓取脚本;
具体来说,在客户端需要数据抓取脚本时,客户端就可以通过执行指定代码来向服务器发起脚本获取请求,这样,在服务器接收到该脚本获取请求后,服务器就可以对该脚本获取请求中所携带的数据抓取脚本的URL进行解析,然后,将该URL所指定的数据资源,即数据抓取脚本返回给客户端。
S204:客户端通过执行数据抓取脚本,从前端页面抓取页面数据;
具体来说,在客户端接收到服务器发送的数据抓取脚本后,客户端就可以通过执行该数据抓取脚本来从前端页面抓取页面数据。
在本发明另一实施例中,当上述服务器具有数据持久化存储的功能时,在具体实施过程中,在上述S204之后,上述页面数据抓取方法还可以包括:
S205:客户端将抓取的页面数据发送至服务器;
在实际应用中,当上述服务器除了具有根据客户端发送的脚本获取请求,向客户端下发数据抓取脚本的功能外,还可以同时担当进一步存储和/或处理客户端所抓取的页面数据的功能,此时,客户端在从前端页面抓取到页面数据后,就可以将所抓取到的页面数据发送给该服务器,以使该服务器对其所抓取的页面数据进行存储和/或处理。
S206:服务器接收并存储客户端发送的从前端页面所抓取的页面数据。
具体来说,在服务器接收到客户端发送的从前端页面所抓取的页面数据后,服务器就可以将该页面数据存储起来,以便后续进行数据处理,例如,基于机器学习模型给出相应的预测结果。
在本发明另一实施例中,为了避免抓取到冗余数据,并避免脏数据进入存储空间,在客户端抓取页面数据之前,客户端就需要先确定是否有必要抓取其当前访问的前端页面的页面数据。那么,在具体实施过程中,在上述S203之后,上述页面数据抓取方法还可以包括以下步骤E1~E3:
步骤E1:服务器接收客户端发送的用于请求下发关于前端页面的抓取配置项的配置获取请求;
这里,配置获取请求中可以携带标识信息,或者,配置获取请求中可以同时携带标识信息以及指定代码所传入的校验信息。其中,标识信息为前端页面的域名、前端页面对应的网站的域名中的至少一个,校验信息用于服务器校验配置获取请求的安全性。
具体来说,抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件。
在实际应用中,抓取约束条件可以包括允许进行网页数据抓取的前端页面的网址正则表达式规则,以使客户端根据前端页面的网址是否符合网址正则表达式规则来确定是否允许抓取前端页面的页面数据。
在本发明其它实施例中,为了向客户端明确指示如何从前端页面的所有数据中抓取所需的页面数据,上述抓取配置项还可以包括用于指示如何进行页面数据抓取的数据抓取规则,以使客户端根据数据抓取规则来从前端页面抓取数据。
在实际应用中,当前端页面是通过HTML来实现的时,上述数据抓取规则可以是通过HTML标签或者HTML标签的属性来设置。
举例来说,上述数据抓取规则可以设置为抓取前端页面中的正文数据,也可以设置为去掉前端页面中的链接数据,当然,还可以设置为其它,如去掉前端页面中的广告数据、去掉前端页面中的版权声明数据等。由本领域技术人员根据实际需要来设定,这里,本发明实施例不做具体限定。
步骤E2:服务器响应配置获取请求,基于标识信息,获取抓取配置项;
步骤E3:服务器将抓取配置项发送给客户端。
具体来说,在服务器接收到配置获取请求后,服务器就会根据标识信息与抓取配置项之间的对应关系,获取到与该配置获取请求中所携带的标识信息对应的关于客户端当前访问的前端页面的抓取配置项。接下来,服务器就会将所获取到的抓取配置项发送给客户端,以使客户端至少基于前端页面是否符合抓取配置项中包括的抓取约束条件来确定是否允许抓取前端页面的页面数据。
在具体实施过程中,当配置获取请求中还携带有指定代码所传入的校验信息,其中,指定代码所传入的校验信息用于校验配置获取请求的安全性时,上述步骤E2可以包括:基于预先存储的域名与校验信息之间的映射关系,确定标识信息对应的校验信息;确定标识信息对应的校验信息与指定代码所传入的校验信息是否相同;如果相同,则基于标识信息,获取抓取配置项。
在实际应用中,对于允许抓取的页面数据的前端页面而言,常常会出现多个用户均可能访问该前端页面的情况,这样,在该前端页面的页面数据未发生变化时,通常只需要通过第一个访问该前端页面的客户端来抓取该前端页面的页面数据即可,无需每次一有客户端访问该前端页面,都去抓取页面数据。因此,在本发明其它实施例中,为了避免客户端重复抓取页面数据,服务器可以采用但不局限于以下方法来实现向客户端指示是否允许进行页面数据抓取。
第一种方法,为了避免客户端重复抓取页面数据,当客户端向服务器发送前端页面的网址来获取判定结果时,服务器可以根据该前端页面的网址确定该前端页面的页面数据是否已经抓取过,并生成对应的判定结果,然后将判定结果发送给客户端。
那么,在具体实施过程中,在上述S203之后,上述页面数据抓取方法还可以包括以下步骤F1~F3:
步骤F1:服务器接收客户端发送的前端页面的网址;
步骤F2:服务器确定数据库所存储的已抓取网址中是否存在前端页面的网址;
其中,数据库用于存储已抓取的页面数据及其对应的前端页面的网址。
步骤F3a:如果不存在前端页面的网址,服务器向客户端发送表示允许进行页面数据抓取的判定结果;
步骤F3b:如果存在前端页面的网址,服务器向客户端发送表示不允许进行页面数据抓取的判定结果。
具体来说,若服务器确定数据库所存储的已抓取网址中不存在前端页面的网址,则表明该前端页面的页面数据并未抓取过,此时,服务器就可以执行步骤F3a向客户端发送表示允许进行页面数据抓取的判定结果,以指示客户端从前端页面抓取页面数据。若服务器确定数据库所存储的已抓取网址中存在前端页面的网址,则表明该前端页面的页面数据已经抓取过,此时,服务器就可以执行步骤F3b向客户端发送表示不允许进行页面数据抓取的判定结果,以指示客户端无需从前端页面抓取页面数据,以使客户端停止执行数据抓取脚本。
第二种方法,为了更好地避免客户端重复抓取页面数据,当客户端向服务器发送前端页面的网址和前端页面中的具有代表性的部分页面数据来获取判定结果时,服务器可以先根据该前端页面的网址确定该前端页面的页面数据是否已经抓取过,若已经抓取过,服务器再根据该部分页面数据确定该前端页面的页面数据是否发生变化,并生成对应的判定结果;若未抓取过,则直接生成对应的判定结果。然后将判定结果发送给客户端。
那么,在具体实施过程中,在上述S203之后,上述页面数据抓取方法还可以包括以下步骤G1~G3:
步骤G1:接收客户端发送的前端页面的网址以及从前端页面抓取的满足预设条件的部分页面数据;
这里,预设条件可与服务器事先约定,相应地,满足预设条件的部分页面数据是指前端页面的页面数据中能够至少在一定程度上表征该前端页面的一部分数据。示例性地,预设条件可以设置为前端页面是网页正文中的前N个字,如前30个字,也可以设置为该前端页面的网页标题,当然,还可以设置为其它,如预设条件可以设置为网页正文第一段文字、网页正文作者及发布时间等等。这里,本发明实施例不做具体限定。
步骤G2:确定在数据库所存储的已抓取网址中是否存在前端页面的网址,
其中,数据库用于存储已抓取的页面数据及其对应的前端页面的网址;
具体来说,若服务器确定数据库所存储的已抓取网址中不存在前端页面的网址,则表明该前端页面的页面数据并未抓取过,此时,可以直接确定需要抓取页面数据,服务器就可以执行步骤G3a,直接向客户端发送表示允许进行页面数据抓取的判定结果,以指示客户端从前端页面抓取页面数据。若服务器确定数据库所存储的已抓取网址中存在前端页面的网址,则表明该前端页面的页面数据已经抓取过,此时,无法直接确定该前端页面的页面数据是否需要更新,服务器还需要执行步骤G3b,以进一步判断该前端页面的页面数据是否发生变化。
步骤G3a:如果不存在前端页面的网址,服务器向客户端发送表示允许进行页面数据抓取的判定结果。
步骤G3b:如果存在前端页面的网址,服务器确定数据库中所存储的与前端页面的网址对应的已抓取的页面数据中是否存在部分页面数据;
步骤G3b1:如果不存在部分页面数据,服务器向客户端发送表示允许进行页面数据抓取的判定结果;
步骤G3b2:如果存在部分页面数据,服务器向客户端发送表示不允许进行页面数据抓取的判定结果。
具体来说,若服务器确定数据库中所存储的与前端页面的网址对应的已抓取的页面数据中不存在部分页面数据,则表明前端页面的页面数据已经发生变化,此时,需要更新该前端页面的页面数据,也就是说需要重新抓取该前端页面的页面数据,那么,服务器就可以执行步骤G3b1,向客户端发送表示允许进行页面数据抓取的判定结果,以指示客户端从前端页面重新抓取页面数据。若服务器确定数据库中所存储的与前端页面的网址对应的已抓取的页面数据中存在部分页面数据,则表明前端页面的页面数据未发生变化,此时,不更新该前端页面的页面数据,也就是说不需要重新抓取该前端页面的页面数据,那么,服务器就可以执行步骤G3b2,向客户端发送表示不允许进行页面数据抓取的判定结果,以指示客户端无需从前端页面抓取页面数据,以使客户端停止执行数据抓取脚本。
在本发明另一实施例中,客户端为了安全和/或快速向服务器传输部分页面数据,客户端会将满足预设条件的部分页面数据加密和/或压缩后,再发送给服务器,那么,在具体实施过程中,上述步骤G1可以包括:接收客户端发送的前端页面的网址以及处理结果,其中,处理结果由客户端对部分页面数据进行加密处理和/或压缩处理所得到。相应地,上述步骤G3b可以包括:从数据库中存储的与前端页面的网址对应的已抓取的页面数据中,获取满足预设条件的目标数据;对目标数据进行加密和/或压缩处理,得到处理后的目标数据;确定处理后的目标数据与处理结果是否相同;如果不相同,确定不存在部分页面数据;如果相同,确定存在部分页面数据。
在具体实施过程中,当客户端采用哈希函数来实现加密和/或压缩处理时,对应地,服务器也需要采用当采用哈希函数来实现加密和/或压缩处理,此时,服务器所接收到的处理结果为客户端利用哈希函数对部分页面数据进行加密处理和压缩处理所得到的哈希值;那么,上述对目标数据进行加密和/或压缩处理,得到处理后的目标数据的步骤就可以包括:利用哈希函数对目标数据进行加密和/或压缩处理,得到作为处理后的目标数据的哈希值。
在实际应用中,上述哈希函数可以由MD5、SHA、RIPEMD等来实现,这里,本发明实施例不做具体限定。
由上述内容可知,本发明实施例所提供的页面数据抓取方法,在客户端访问前端页面的过程中,客户端能够通过执行前端页面代码中预先插入的指定代码向服务器发送用于请求下发数据抓取脚本的脚本获取请求;接下来,服务器就会向客户端发送该数据抓取脚本;最后,客户端就可以通过执行数据抓取脚本来从前端页面抓取页面数据。这样,由于是由客户端通过数据抓取脚本来从前端页面抓取页面数据的,能够实现既快速又有效地抓取页面数据。
基于同一发明构思,作为对上述方法的实现,本发明实施例提供了一种页面数据抓取装置,在实际应用中,该页面数据抓取装置可应用于客户端,图3为本发明实施例中的页面数据抓取装置的结构示意图一,参见图3所示,该装置30可以包括:第一执行单元301,用于在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;第二执行单元302,用于通过执行数据抓取脚本,从前端页面抓取页面数据;第一发送单元303,用于发送抓取的页面数据。
在本发明实施例中,第一执行单元,用于在前端页面的文本对象模型DOM树创建后,执行前端页面代码中预先插入的指定代码;和/或,在前端页面中的页面元素加载完成后,执行前端页面代码中预先插入的指定代码;和/或,在前端页面渲染完成后,执行前端页面代码中预先插入的指定代码。
在本发明实施例中,第一发送单元,用于将抓取的页面数据发送至服务器。
在本发明实施例中,第一执行单元,用于通过执行指定代码,向服务器发送用于请求下发数据抓取脚本的脚本获取请求,其中,脚本获取请求中携带数据抓取脚本的统一资源定位符URL;从服务器接收数据抓取脚本。
在本发明实施例中,第二执行单元,用于获取关于前端页面的抓取配置项,其中,抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件;至少基于前端页面是否符合抓取约束条件,确定是否允许抓取前端页面的页面数据;如果允许抓取,则从前端页面抓取页面数据。
在本发明实施例中,抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则;第二执行单元,用于根据数据抓取规则,从前端页面抓取页面数据。
在本发明实施例中,抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则;第二执行单元,用于确定前端页面的网址是否符合网址正则表达式规则;如果符合,则确定允许抓取前端页面的页面数据;否则,确定不允许抓取前端页面的页面数据。
在本发明实施例中,第二执行单元,用于确定前端页面是否符合抓取约束条件;如果符合,则将前端页面的网址发送至服务器,以使服务器根据前端页面的网址来判定是否允许抓取前端页面的页面数据;若接收到来自服务器的表示允许进行页面数据抓取的判定结果,确定允许抓取前端页面的页面数据。
在本发明实施例中,第二执行单元,用于确定前端页面是否符合抓取约束条件;如果符合,则从前端页面抓取满足预设条件的部分页面数据,并将前端页面的网址以及部分页面数据发送给服务器,以使服务器根据前端页面的网址和部分页面数据来判定是否允许抓取前端页面的页面数据;接收服务器发送的判定结果;根据判定结果,确定是否允许抓取前端页面的页面数据。
在本发明实施例中,第二执行单元,用于按照预设条件,从前端页面抓取部分页面数据;对部分页面数据进行加密处理和/或压缩处理,得到处理结果;将前端页面的网址以及处理结果发送给服务器。
在本发明实施例中,第二执行单元,用于利用哈希函数对部分页面数据进行加密处理和压缩处理,得到作为处理结果的哈希值。
在本发明实施例中,第二执行单元,用于从前端页面的网址中,提取前端页面的标识信息,其中,标识信息为前端页面的域名、前端页面对应的网站的域名中的至少一个;向服务器发送用于请求服务器下发抓取配置项的配置获取请求,其中,配置获取请求中携带标识信息,或者,配置获取请求中携带标识信息和指定代码所传入的校验信息,校验信息用于服务器校验配置获取请求的安全性;接收来自服务器的抓取配置项。
在本发明其它实施例中,第二执行单元,用于确定本地存储空间中是否存在与标识信息对应的抓取配置项;如果不存在,则向服务器发送配置获取请求;上述装置还包括:存储单元,用于将抓取配置项与标识信息对应地存储至本地存储空间中。
在本发明其它实施例中,上述装置还包括:计算单元,用于如果第二执行单元确定本地存储空间中存在与标识信息对应的抓取配置项,计算本地存储空间中所存在的与标识信息对应的抓取配置项的更新时间与当前时间之间的间隔时长;判断单元,用于判断间隔时长是否超过预设数据失效时长;第二发送单元,用于若判断单元判断间隔时长超过预设数据失效时长,向服务器发送配置获取请求;否则,将本地存储空间中所存在的与标识信息对应的抓取配置项确定为关于前端页面的抓取配置项。
基于同一发明构思,作为对上述方法的实现,本发明实施例提供了一种页面数据抓取装置,在实际应用中,该页面数据抓取装置可应用于服务器,图4为本发明实施例中的页面数据抓取装置的结构示意图二,参见图4所示,该装置40可以包括:第一接收单元401,用于接收客户端在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码所发送的脚本获取请求,其中,脚本获取请求中携带数据抓取脚本的统一资源定位符URL,用于请求下发数据抓取脚本;第一响应单元402,用于响应脚本获取请求,基于URL,获取数据抓取脚本;第一发送单元403,用于向客户端发送数据抓取脚本,以使客户端通过执行数据抓取脚本来从前端页面抓取页面数据。
在本发明其它实施例中,上述装置还包括:接收存储单元,用于接收并存储客户端发送的从前端页面所抓取的页面数据。
在本发明其它实施例中,上述装置还包括:第二接收单元,用于接收客户端发送的前端页面的网址;第一确定单元,用于确定数据库所存储的已抓取网址中是否存在前端页面的网址,其中,数据库用于存储已抓取的页面数据及其对应的前端页面的网址;第二发送单元,用于如果第一确定单元确定不存在前端页面的网址,向客户端发送表示允许进行页面数据抓取的判定结果;否则,向客户端发送表示不允许进行页面数据抓取的判定结果。
在本发明其它实施例中,上述装置还包括:第三接收单元,用于接收客户端发送的前端页面的网址以及从前端页面抓取的满足预设条件的部分页面数据;第二确定单元,用于确定在数据库所存储的已抓取网址中是否存在前端页面的网址,其中,数据库用于存储已抓取的页面数据及其对应的前端页面的网址;第三确定单元,用于如果第二确定单元确定存在前端页面的网址,确定数据库中所存储的与前端页面的网址对应的已抓取的页面数据中是否存在部分页面数据;第三发送单元,用于如果第二确定单元确定不存在部分页面数据,向客户端发送表示允许进行页面数据抓取的判定结果;否则,向客户端发送表示不允许进行页面数据抓取的判定结果,以使客户端根据判定结果来确定是否允许抓取前端页面的页面数据。
在本发明实施例中,第三接收单元,用于接收客户端发送的前端页面的网址以及处理结果,其中,处理结果由客户端对部分页面数据进行加密处理和/或压缩处理所得到;第三确定单元,用于从数据库中存储的与前端页面的网址对应的已抓取的页面数据中,获取满足预设条件的目标数据;对目标数据进行加密和/或压缩处理,得到处理后的目标数据;确定处理后的目标数据与处理结果是否相同;如果不相同,确定不存在部分页面数据;如果相同,确定存在部分页面数据。
在本发明实施例中,处理结果为客户端利用哈希函数对部分页面数据进行加密处理和压缩处理所得到的哈希值;第三确定单元,用于利用哈希函数对目标数据进行加密和/或压缩处理,得到作为处理后的目标数据的哈希值。
在本发明其它实施例中,上述装置还包括:第四接收单元,用于接收客户端发送的用于请求下发关于前端页面的抓取配置项的配置获取请求,其中,抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件,配置获取请求中携带前端页面对应的标识信息,标识信息为前端页面的域名、前端页面对应的网站的域名中的至少一个;第二响应单元,用于响应配置获取请求,基于标识信息,获取抓取配置项;第四发送单元,用于将抓取配置项发送给客户端,以使客户端至少基于前端页面是否符合抓取约束条件来确定是否允许抓取前端页面的页面数据。
在本发明实施例中,抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则,以使客户端根据数据抓取规则来从前端页面抓取数据。
在本发明实施例中,抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则,以使客户端根据前端页面的网址是否符合网址正则表达式规则来确定是否允许抓取前端页面的页面数据。
在本发明实施例中,配置获取请求中还携带有指定代码所传入的校验信息,其中,指定代码所传入的校验信息用于校验配置获取请求的安全性;第二响应单元,用于基于预先存储的域名与校验信息之间的映射关系,确定标识信息对应的校验信息;确定标识信息对应的校验信息与指定代码所传入的校验信息是否相同;如果相同,则基于标识信息,获取抓取配置项。
基于同一发明构思,本发明实施例提供一种电子设备。图5为本发明实施例中的电子设备的结构示意图,参见图5所示,该电子设备50包括:至少一个处理器501;以及与处理器501连接的至少一个存储器502、总线503;其中,处理器501、存储器502通过总线503完成相互间的通信;处理器501用于调用存储器502中的程序指令,以执行上述一个或多个实施例中的页面数据抓取方法的步骤。
相应地,基于同一发明构思,本发明实施例还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述一个或多个实施例中的页面数据抓取方法的步骤。
上述处理器可由中央处理器(Central Processing Unit,CPU)、微处理器(MicroProcessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。存储器可能包括计算机可读介质中的非永久性存储器,随机存储器(Random Access Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash RAM),存储器包括至少一个存储芯片。
需要说明的是,在本发明实施例中,如果以软件功能模块的形式实现上述一个或多个实施例中的页面数据抓取方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例方法的全部或部分。
相应地,基于同一发明构思,本发明实施例再提供一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述一个或多个实施例中的页面数据抓取方法的步骤。
这里需要指出的是:以上装置、电子设备或计算机可读存储介质实施例的描述与前述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,对于本发明装置、电子设备或计算机可读存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解,为便于阅读,以上装置、电子设备或计算机可读存储介质实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,以上装置、电子设备或计算机可读存储介质能够对应实现前述方法实施例中的全部内容。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,RAM和/或非易失性内存等形式,如ROM或Flash RAM。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质可以是ROM、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是快闪记忆体或其他内存技术、CD-ROM、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息;还可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (40)

1.一种页面数据抓取方法,其特征在于,应用于客户端,所述方法包括:
在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;
通过执行所述数据抓取脚本,从所述前端页面抓取页面数据;
发送抓取的页面数据;
其中,所述从所述前端页面抓取页面数据,包括:获取关于所述前端页面的抓取配置项,其中,所述抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件;至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据;如果允许抓取,则从所述前端页面抓取页面数据;
其中,所述至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据,包括:确定所述前端页面是否符合所述抓取约束条件;如果符合,则从所述前端页面抓取满足预设条件的部分页面数据,并将所述前端页面的网址以及所述部分页面数据发送给所述服务器,以使所述服务器根据所述前端页面的网址和所述部分页面数据来判定是否允许抓取所述前端页面的页面数据;接收所述服务器发送的判定结果;根据所述判定结果,确定是否允许抓取所述前端页面的页面数据。
2.根据权利要求1所述的方法,其中,所述在访问前端页面的过程中,执行前端页面代码中预先插入的指定代码,包括:
在所述前端页面的文本对象模型DOM树创建后,执行前端页面代码中预先插入的指定代码;
和/或,在所述前端页面中的页面元素加载完成后,执行前端页面代码中预先插入的指定代码;
和/或,在所述前端页面渲染完成后,执行前端页面代码中预先插入的指定代码。
3.根据权利要求1所述的方法,其中,所述发送抓取的页面数据,包括:将抓取的页面数据发送至所述服务器。
4.根据权利要求1所述的方法,其特征在于,所述通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本,包括:
通过执行所述指定代码,向所述服务器发送用于请求下发所述数据抓取脚本的脚本获取请求,其中,所述脚本获取请求中携带所述数据抓取脚本的统一资源定位符URL;
从所述服务器接收所述数据抓取脚本。
5.根据权利要求1所述的方法,其特征在于,所述抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则;
所述从所述前端页面抓取页面数据,包括:根据所述数据抓取规则,从所述前端页面抓取页面数据。
6.根据权利要求1所述的方法,其特征在于,所述抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则;
所述至少基于所述前端页面是否符合所述抓取约束条件,确定是否允许抓取所述前端页面的页面数据,包括:
确定所述前端页面的网址是否符合所述网址正则表达式规则;
如果符合,则确定允许抓取所述前端页面的页面数据;否则,确定不允许抓取所述前端页面的页面数据。
7.根据权利要求1所述的方法,其特征在于,所述从所述前端页面抓取满足预设条件的部分页面数据,并将所述前端页面的网址以及所述部分页面数据发送给所述服务器,包括:
按照所述预设条件,从所述前端页面抓取所述部分页面数据;
对所述部分页面数据进行加密处理和/或压缩处理,得到处理结果;
将所述前端页面的网址以及所述处理结果发送给所述服务器。
8.根据权利要求7所述的方法,其特征在于,所述对所述部分页面数据进行加密处理和/或压缩处理,得到处理结果,包括:
利用哈希函数对所述部分页面数据进行加密处理和压缩处理,得到作为所述处理结果的哈希值。
9.根据权利要求1所述的方法,其特征在于,所述获取关于所述前端页面的抓取配置项,包括:
从所述前端页面的网址中,提取所述前端页面的标识信息,其中,所述标识信息为所述前端页面的域名、所述前端页面对应的网站的域名中的至少一个;
向所述服务器发送用于请求所述服务器下发所述抓取配置项的配置获取请求,其中,所述配置获取请求中携带所述标识信息,或者,所述配置获取请求中携带所述标识信息和所述指定代码所传入的校验信息,所述校验信息用于所述服务器校验所述配置获取请求的安全性;
接收来自所述服务器的所述抓取配置项。
10.根据权利要求9所述的方法,其特征在于,所述向所述服务器发送用于请求所述服务器下发所述抓取配置项的配置获取请求,包括:确定本地存储空间中是否存在与所述标识信息对应的抓取配置项;如果不存在,则向所述服务器发送所述配置获取请求;
在所述接收来自所述服务器的所述抓取配置项之后,所述方法还包括:将所述抓取配置项与所述标识信息对应地存储至所述本地存储空间中。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
如果存在,计算所述本地存储空间中所存在的与所述标识信息对应的抓取配置项的更新时间与当前时间之间的间隔时长;
判断所述间隔时长是否超过预设数据失效时长;
若所述间隔时长超过所述预设数据失效时长,向所述服务器发送所述配置获取请求;否则,将所述本地存储空间中所存在的与所述标识信息对应的抓取配置项确定为关于所述前端页面的抓取配置项。
12.一种页面数据抓取方法,其特征在于,应用于服务器,所述方法包括:
接收客户端在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码所发送的脚本获取请求,其中,所述脚本获取请求中携带数据抓取脚本的统一资源定位符URL,用于请求下发所述数据抓取脚本;
响应所述脚本获取请求,基于所述URL,获取所述数据抓取脚本;
向所述客户端发送所述数据抓取脚本,以使所述客户端通过执行所述数据抓取脚本来从所述前端页面抓取页面数据;
接收所述客户端发送的所述前端页面的网址以及从所述前端页面抓取的满足预设条件的部分页面数据;
确定在数据库所存储的已抓取网址中是否存在所述前端页面的网址,其中,所述数据库用于存储已抓取的页面数据及其对应的前端页面的网址;
如果存在所述前端页面的网址,确定所述数据库中所存储的与所述前端页面的网址对应的已抓取的页面数据中是否存在所述部分页面数据;
如果不存在所述部分页面数据,向所述客户端发送表示允许进行页面数据抓取的判定结果;否则,向所述客户端发送表示不允许进行页面数据抓取的判定结果,以使所述客户端根据所述判定结果来确定是否允许抓取所述前端页面的页面数据。
13.根据权利要求12所述的方法,在所述向所述客户端发送所述数据抓取脚本之后,所述方法还包括:
接收并存储所述客户端发送的从所述前端页面所抓取的页面数据。
14.根据权利要求12所述的方法,其特征在于,所述接收所述客户端发送的所述前端页面的网址以及从所述前端页面抓取的满足预设条件的部分页面数据,包括:接收所述客户端发送的所述前端页面的网址以及处理结果,其中,所述处理结果由所述客户端对所述部分页面数据进行加密处理和/或压缩处理所得到;
所述确定所述数据库中存储的与所述前端页面的网址对应的已抓取的页面数据中是否存在所述部分页面数据,包括:
从所述数据库中存储的与所述前端页面的网址对应的已抓取的页面数据中,获取满足所述预设条件的目标数据;
对所述目标数据进行加密和/或压缩处理,得到处理后的目标数据;
确定所述处理后的目标数据与所述处理结果是否相同;
如果不相同,确定不存在所述部分页面数据;如果相同,确定存在所述部分页面数据。
15.根据权利要求14所述的方法,其特征在于,所述处理结果为所述客户端利用哈希函数对所述部分页面数据进行加密处理和压缩处理所得到的哈希值;
所述对所述目标数据进行加密和/或压缩处理,得到处理后的目标数据,包括:利用哈希函数对所述目标数据进行加密和/或压缩处理,得到作为所述处理后的目标数据的哈希值。
16.根据权利要求12所述的方法,其特征在于,在所述向所述客户端发送所述数据抓取脚本之后,所述方法还包括:
接收所述客户端发送的用于请求下发关于所述前端页面的抓取配置项的配置获取请求,其中,所述抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件,所述配置获取请求中携带所述前端页面对应的标识信息,所述标识信息为所述前端页面的域名、所述前端页面对应的网站的域名中的至少一个;
响应所述配置获取请求,基于所述标识信息,获取所述抓取配置项;
将所述抓取配置项发送给所述客户端,以使所述客户端至少基于所述前端页面是否符合所述抓取约束条件来确定是否允许抓取所述前端页面的页面数据。
17.根据权利要求16所述的方法,其特征在于,所述抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则,以使所述客户端根据所述数据抓取规则来从所述前端页面抓取数据。
18.根据权利要求16所述的方法,其特征在于,所述抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则,以使所述客户端根据所述前端页面的网址是否符合所述网址正则表达式规则来确定是否允许抓取所述前端页面的页面数据。
19.根据权利要求16所述的方法,其特征在于,所述配置获取请求中还携带有所述指定代码所传入的校验信息,其中,所述指定代码所传入的校验信息用于校验所述配置获取请求的安全性;
所述基于所述标识信息,获取所述抓取配置项,包括:
基于预先存储的域名与校验信息之间的映射关系,确定所述标识信息对应的校验信息;
确定所述标识信息对应的校验信息与所述指定代码所传入的校验信息是否相同;
如果相同,则基于所述标识信息,获取所述抓取配置项。
20.一种页面数据抓取装置,其特征在于,应用于客户端,所述装置包括:
第一执行单元,用于在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码,从服务器中获取预设的数据抓取脚本;
第二执行单元,用于通过执行所述数据抓取脚本,从所述前端页面抓取页面数据;
第一发送单元,用于发送抓取的页面数据;
其中,所述第二执行单元,用于获取关于前端页面的抓取配置项,其中,抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件;至少基于前端页面是否符合抓取约束条件,确定是否允许抓取前端页面的页面数据;如果允许抓取,则从前端页面抓取页面数据;
其中,所述第二执行单元,用于确定前端页面是否符合抓取约束条件;如果符合,则从前端页面抓取满足预设条件的部分页面数据,并将前端页面的网址以及部分页面数据发送给服务器,以使服务器根据前端页面的网址和部分页面数据来判定是否允许抓取前端页面的页面数据;接收服务器发送的判定结果;根据判定结果,确定是否允许抓取前端页面的页面数据。
21.根据权利要求20所述的装置,其特征在于,
所述第一执行单元,用于在前端页面的文本对象模型DOM树创建后,执行前端页面代码中预先插入的指定代码;和/或,在前端页面中的页面元素加载完成后,执行前端页面代码中预先插入的指定代码;和/或,在前端页面渲染完成后,执行前端页面代码中预先插入的指定代码。
22.根据权利要求20所述的装置,其特征在于,
所述第一发送单元,用于将抓取的页面数据发送至服务器。
23.根据权利要求20所述的装置,其特征在于,
所述第一执行单元,用于通过执行指定代码,向服务器发送用于请求下发数据抓取脚本的脚本获取请求,其中,脚本获取请求中携带数据抓取脚本的统一资源定位符URL;从服务器接收数据抓取脚本。
24.根据权利要求20所述的装置,其特征在于,所述抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则;
所述第二执行单元,用于根据数据抓取规则,从前端页面抓取页面数据。
25.根据权利要求20所述的装置,其特征在于,所述抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则;
所述第二执行单元,用于确定前端页面的网址是否符合网址正则表达式规则;如果符合,则确定允许抓取前端页面的页面数据;否则,确定不允许抓取前端页面的页面数据。
26.根据权利要求20所述的装置,其特征在于,
所述第二执行单元,用于按照预设条件,从前端页面抓取部分页面数据;对部分页面数据进行加密处理和/或压缩处理,得到处理结果;将前端页面的网址以及处理结果发送给服务器。
27.根据权利要求26所述的装置,其特征在于,
所述第二执行单元,用于利用哈希函数对部分页面数据进行加密处理和压缩处理,得到作为处理结果的哈希值。
28.根据权利要求20所述的装置,其特征在于,
所述第二执行单元,用于从前端页面的网址中,提取前端页面的标识信息,其中,标识信息为前端页面的域名、前端页面对应的网站的域名中的至少一个;向服务器发送用于请求服务器下发抓取配置项的配置获取请求,其中,配置获取请求中携带标识信息,或者,配置获取请求中携带标识信息和指定代码所传入的校验信息,校验信息用于服务器校验配置获取请求的安全性;接收来自服务器的抓取配置项。
29.根据权利要求28所述的装置,其特征在于,
第二执行单元,用于确定本地存储空间中是否存在与标识信息对应的抓取配置项;如果不存在,则向服务器发送配置获取请求;上述装置还包括:存储单元,用于将抓取配置项与标识信息对应地存储至本地存储空间中。
30.根据权利要求29所述的装置,其特征在于,该装置还包括:
计算单元,用于如果第二执行单元确定本地存储空间中存在与标识信息对应的抓取配置项,计算本地存储空间中所存在的与标识信息对应的抓取配置项的更新时间与当前时间之间的间隔时长;判断单元,用于判断间隔时长是否超过预设数据失效时长;第二发送单元,用于若判断单元判断间隔时长超过预设数据失效时长,向服务器发送配置获取请求;否则,将本地存储空间中所存在的与标识信息对应的抓取配置项确定为关于前端页面的抓取配置项。
31.一种页面数据抓取装置,其特征在于,应用于服务器,所述装置包括:
第一接收单元,用于接收客户端在访问前端页面的过程中,通过执行前端页面代码中预先插入的指定代码所发送的脚本获取请求,其中,所述脚本获取请求中携带数据抓取脚本的统一资源定位符URL,用于请求下发所述数据抓取脚本;
第一响应单元,用于响应所述脚本获取请求,基于所述URL,获取所述数据抓取脚本;
第一发送单元,用于向所述客户端发送所述数据抓取脚本,以使所述客户端通过执行所述数据抓取脚本来从所述前端页面抓取页面数据;
该装置还包括:第三接收单元,用于接收客户端发送的前端页面的网址以及从前端页面抓取的满足预设条件的部分页面数据;第二确定单元,用于确定在数据库所存储的已抓取网址中是否存在前端页面的网址,其中,数据库用于存储已抓取的页面数据及其对应的前端页面的网址;第三确定单元,用于如果第二确定单元确定存在前端页面的网址,确定数据库中所存储的与前端页面的网址对应的已抓取的页面数据中是否存在部分页面数据;第三发送单元,用于如果第二确定单元确定不存在部分页面数据,向客户端发送表示允许进行页面数据抓取的判定结果;否则,向客户端发送表示不允许进行页面数据抓取的判定结果,以使客户端根据判定结果来确定是否允许抓取前端页面的页面数据。
32.根据权利要求31所述的装置,其特征在于,该装置还包括:
接收存储单元,用于接收并存储客户端发送的从前端页面所抓取的页面数据。
33.根据权利要求31所述的装置,其特征在于,
所述第三接收单元,用于接收客户端发送的前端页面的网址以及处理结果,其中,处理结果由客户端对部分页面数据进行加密处理和/或压缩处理所得到;第三确定单元,用于从数据库中存储的与前端页面的网址对应的已抓取的页面数据中,获取满足预设条件的目标数据;对目标数据进行加密和/或压缩处理,得到处理后的目标数据;确定处理后的目标数据与处理结果是否相同;如果不相同,确定不存在部分页面数据;如果相同,确定存在部分页面数据。
34.根据权利要求33所述的装置,其特征在于,处理结果为客户端利用哈希函数对部分页面数据进行加密处理和压缩处理所得到的哈希值;
所述第三确定单元,用于利用哈希函数对目标数据进行加密和/或压缩处理,得到作为处理后的目标数据的哈希值。
35.根据权利要求31所述的装置,其特征在于,该装置还包括:
第四接收单元,用于接收客户端发送的用于请求下发关于前端页面的抓取配置项的配置获取请求,其中,抓取配置项包括用于表示允许进行页面数据抓取的抓取约束条件,配置获取请求中携带前端页面对应的标识信息,标识信息为前端页面的域名、前端页面对应的网站的域名中的至少一个;第二响应单元,用于响应配置获取请求,基于标识信息,获取抓取配置项;第四发送单元,用于将抓取配置项发送给客户端,以使客户端至少基于前端页面是否符合抓取约束条件来确定是否允许抓取前端页面的页面数据。
36.根据权利要求35所述的装置,其特征在于,抓取配置项还包括用于指示如何进行页面数据抓取的数据抓取规则,以使客户端根据数据抓取规则来从前端页面抓取数据。
37.根据权利要求35所述的装置,其特征在于,抓取约束条件包括允许进行网页数据抓取的前端页面的网址正则表达式规则,以使客户端根据前端页面的网址是否符合网址正则表达式规则来确定是否允许抓取前端页面的页面数据。
38.根据权利要求35所述的装置,其特征在于,配置获取请求中还携带有指定代码所传入的校验信息,其中,指定代码所传入的校验信息用于校验配置获取请求的安全性;第二响应单元,用于基于预先存储的域名与校验信息之间的映射关系,确定标识信息对应的校验信息;确定标识信息对应的校验信息与指定代码所传入的校验信息是否相同;如果相同,则基于标识信息,获取抓取配置项。
39.一种计算机可读存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1至19任一项所述的页面数据抓取方法的步骤。
40.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;
以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至19任一项所述的页面数据抓取方法的步骤。
CN201811572163.1A 2018-12-21 2018-12-21 一种页面数据抓取方法及装置 Active CN109670100B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811572163.1A CN109670100B (zh) 2018-12-21 2018-12-21 一种页面数据抓取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811572163.1A CN109670100B (zh) 2018-12-21 2018-12-21 一种页面数据抓取方法及装置

Publications (2)

Publication Number Publication Date
CN109670100A CN109670100A (zh) 2019-04-23
CN109670100B true CN109670100B (zh) 2020-06-26

Family

ID=66147042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811572163.1A Active CN109670100B (zh) 2018-12-21 2018-12-21 一种页面数据抓取方法及装置

Country Status (1)

Country Link
CN (1) CN109670100B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112995252B (zh) * 2019-12-13 2023-08-08 阿里巴巴集团控股有限公司 页端与客户端间的数据传输方法、装置、设备及存储介质
CN111061955B (zh) * 2019-12-20 2023-11-07 深圳市朱墨科技有限公司 网页正文的提取方法、装置、服务器和存储介质
CN112637361B (zh) * 2020-12-29 2022-09-16 北京天融信网络安全技术有限公司 一种页面代理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354337A (zh) * 2015-12-08 2016-02-24 北京奇虎科技有限公司 一种网络爬虫实现方法和网络爬虫系统
CN107644028A (zh) * 2016-07-20 2018-01-30 平安科技(深圳)有限公司 网页数据的收集方法及系统
WO2018144406A1 (en) * 2017-01-31 2018-08-09 Glance Networks, Inc. Method and apparatus for enabling co-browsing of third party websites

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140696A1 (en) * 2006-12-07 2008-06-12 Pantheon Systems, Inc. System and method for analyzing data sources to generate metadata
CN105956173A (zh) * 2016-05-24 2016-09-21 百度在线网络技术(北京)有限公司 页面内容获取方法和装置
CN106649567A (zh) * 2016-11-15 2017-05-10 杭州安恒信息技术有限公司 一种基于浏览器内核的网络爬虫系统
CN107729344B (zh) * 2017-07-26 2020-08-28 深圳壹账通智能科技有限公司 网站数据爬取方法、装置、计算机设备及可读存储介质
CN107689951A (zh) * 2017-07-26 2018-02-13 上海壹账通金融科技有限公司 网页数据爬取方法、装置、用户终端及可读存储介质
CN108595510A (zh) * 2018-03-22 2018-09-28 成都数聚城堡科技有限公司 一种基于浏览器端的爬虫、分布式爬虫系统及方法
CN108932285A (zh) * 2018-05-22 2018-12-04 北京工业大学 一种基于浏览器扩展的数据抓取方法及系统
CN108875091B (zh) * 2018-08-14 2020-06-02 杭州费尔斯通科技有限公司 一种统一管理的分布式网络爬虫系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354337A (zh) * 2015-12-08 2016-02-24 北京奇虎科技有限公司 一种网络爬虫实现方法和网络爬虫系统
CN107644028A (zh) * 2016-07-20 2018-01-30 平安科技(深圳)有限公司 网页数据的收集方法及系统
WO2018144406A1 (en) * 2017-01-31 2018-08-09 Glance Networks, Inc. Method and apparatus for enabling co-browsing of third party websites

Also Published As

Publication number Publication date
CN109670100A (zh) 2019-04-23

Similar Documents

Publication Publication Date Title
TWI670611B (zh) 網頁文件發送方法、網頁渲染方法及裝置、網頁渲染系統
CN109670100B (zh) 一种页面数据抓取方法及装置
US20130042306A1 (en) Determining machine behavior
US10447742B2 (en) Information sharing method and device
US8645916B2 (en) Crunching dynamically generated script files
CN109829121B (zh) 一种点击行为数据上报的方法和装置
CN107147645B (zh) 网络安全数据的获取方法及装置
CN112685671A (zh) 页面显示方法、装置、设备及存储介质
WO2013111028A1 (en) Web application content mapping
EP3863252A1 (en) Advertisement anti-shielding method and device
CN107786529B (zh) 网站的检测方法、装置及系统
WO2020239828A1 (en) Methods for detecting tracking elements of a web page and related server devices
CN109862074B (zh) 一种数据采集方法、装置、可读介质及电子设备
CN109492149B (zh) 爬虫任务处理方法及装置
CN107766224B (zh) 测试方法和测试装置
CN111680247B (zh) 网页字符串的本地调用方法、装置、设备及存储介质
CN111368231B (zh) 一种异构冗余架构网站的测试方法及装置
CN114254218A (zh) 一种外链访问加速方法、装置及计算机存储介质
CN113704648A (zh) 页面数据处理方法、装置、设备及存储介质
CN113922980A (zh) 一种基于http探测信息的dns监测方法、设备及存储介质
CN104679786B (zh) 一种表单处理的方法及装置
CN110209959B (zh) 信息处理方法和装置
WO2021004792A1 (en) Methods for controlling tracking elements of a web page and related electronic devices
CN106776961B (zh) 网页本地存储空间扩容方法、浏览器客户端及电子设备
CN116304458B (zh) 一种web页面实时通知更新方法、装置、设备及介质

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
GR01 Patent grant
GR01 Patent grant