网页获取方法、装置、计算机设备及存储介质与流程

文档序号:18642073发布日期:2019-09-11 23:33阅读:133来源:国知局
本发明涉及计算机
技术领域
:,特别是涉及一种网页获取方法、装置、计算机设备及存储介质。
背景技术
::随着互联网技术的飞速发展,越来越多的场景需要获取网页内容。比如,网页爬虫就需要爬取网页内容。网页内容的完整性,直接影响到相关结果的准确性,因此,获取完整的网页内容至关重要。传统方法在获取网页内容时,是使用http协议请求网页内容,这种方式所请求到的网页内容,并未经过浏览器的解析计算,可能只包含部分数据。所以,导致获取的网页内容缺失比较多,造成所获取的网页内容不够准确。技术实现要素:基于此,有必要针对传统网页获取方法存在的准确性比较低的问题,提供一种网页获取方法、装置、计算机设备及存储介质。一种网页获取方法,所述方法包括:在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址;由所述页面获取应用,调用安装于所述容器中的浏览器;通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。一种网页获取装置,所述装置包括:获取模块,用于在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址;调用模块,用于由所述页面获取应用,调用安装于所述容器中的浏览器;渲染模块,用于通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址;由所述页面获取应用,调用安装于所述容器中的浏览器;通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址;由所述页面获取应用,调用安装于所述容器中的浏览器;通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。上述网页获取方法、装置、计算机设备及存储介质,在容器中运行所安装的用于获取页面内容的页面获取应用,通过该页面获取应用获取目标网页的链接地址。在容器中安装有浏览器,由页面获取应用调用容器中的浏览器,即可以通过浏览器渲染与所述链接地址对应的目标网页的页面内容。那么,最终获取的目标网页的页面内容,是经过浏览器渲染解析得到的,因此,相较于传统的基于http协议请求所获取的页面内容而言,更加地完整,从而提高了所获取的网页内容的准确性。附图说明图1为一个实施例中网页获取方法的应用场景图;图2为一个实施例中网页获取方法的流程示意图;图3为一个实施例中网页获取方法的架构示意图;图4为另一个实施例中网页获取方法的流程示意图;图5为一个实施例中的网页获取方法的时序图;图6为一个实施例中网页获取装置的框图;图7为另一个实施例中网页获取装置的框图;图8为一个实施例中计算机设备的框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图1为一个实施例中网页获取方法的应用场景图。参照图1,该应用场景中包括终端110和服务器120。终端110可以是智能电视机、智能音箱、台式计算机或移动终端,移动终端可以包括手机、平板电脑、笔记本电脑、个人数字助理和穿戴式设备等中的至少一种。服务器120可以用独立的服务器或者是多个物理服务器组成的服务器集群来实现。服务器120中安装有容器,容器中设置有页面获取应用。服务器120可以在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序。服务器120可以通过页面获取应用接收终端110发送的目标网页的链接地址。服务器120可以由所述页面获取应用,调用安装于所述容器中的浏览器,并通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。服务器120可以将渲染的页面内容返回至终端110。需要说明的是,本申请所提供的网页获取方法并不限定于图1所列举的实施例。在其他实施例中,服务器120也可以直接从本地获取所指定的目标网页的链接地址。图2为一个实施例中网页获取方法的流程示意图。本实施例主要以该网页获取方法应用于计算机设备为例进行举例说明,该计算机设备可以为图1中的服务器120。参照图2,该方法具体包括如下步骤:s202,在容器中运行页面获取应用;页面获取应用,是安装于容器的用于获取页面内容的应用程序。其中,容器,是一种轻量级、可移植、自包含的软件包,可使应用程序在任何地方以相同的方式运行。即,当应用程序被安装于容器中时,那么该应用程序所依赖的下层环境就不再重要了,其可以在任何地方以相同的方式运行。具体地,计算机设备中可以通过容器技术创建容器,在容器中安装页面获取应用。该页面获取应用,是专设的用于获取页面内容的应用程序。计算机设备可以在容器中运行该页面获取应用,以实现对目标网页的网页内容的获取。在一个实施例中,计算机设备可以通过docker技术来创建容器。docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。s204,通过页面获取应用获取目标网页的链接地址。其中,目标网页的链接地址,即目标网页的统一资源定位符(url,uniformresourcelocator,统一资源定位符),用于指出目标网页的数据的存储位置。可以理解,目标网页的数据,是指目标网页未经过解析的、无法直接进行展示的原始数据。即,对目标网页的原始的数据进行解析渲染后,才能够生成能够直接展示的页面内容。目标网页,即为待获取页面内容的网页。可以理解,目标网页可以是任意形式的网页。在一个实施例中,目标网页可以包括单页面应用的网页和多页面应用的网页中的至少一种。其中,单页面应用(singlepagewebapplication,spa),是指只有一张web页面的应用程序。可以理解,单页面应用是一种特殊的web应用。它将所有的活动局限于一个web页面中,仅在该web页面初始化时加载相应的html(hypertextmarkuplanguage,超文本标记语言)、javascript和css(cascadingstylesheets,层叠样式表)。一旦页面加载完成,后续所有的操作都在这张页面上完成,spa不会因为用户的操作而进行页面的重新加载或跳转,而是由javascript来控制,当url地址变更时或请求参数变更时,javascript重新获取数据并对该页面进行更新。其中,javascrip,是一种直译式脚本语言。多页面应用(multi-pageapplication,mpa),是指在每一次页面跳转时,后台服务器都会返回一个新的html文档,以生成一个新的页面的应用程序。可以理解,多页面应用是比较常见的web应用。在一个实施例中,计算机设备可以在本地预先存储目标网页的链接地址。那么,计算机设备可以通过页面获取应用直接从本地获取目标网页的链接地址。在另一个实施例中,计算机设备也可以在接收到页面请求后,从页面请求中提取目标网页的链接地址。s206,由页面获取应用,调用安装于容器中的浏览器。具体地,计算机设备预先在容器中安装有浏览器。需要说明的是,容器中所安装的浏览器是实质意义上的浏览器,而并非由测试工具所模拟形成的模拟浏览器。在一个实施例中,浏览器可以是支持网页通用渲染的浏览器。即,浏览器对普遍网页的渲染都有着非常好的支持。可以理解,支持网页通用渲染的浏览器,对网页渲染的能力更强,从而能够渲染得到更加完整的目标网页的页面内容。需要说明的是,这里并不限定于浏览器是支持网页通用渲染的浏览器。在一个实施例中,浏览器可以是谷歌浏览器(googlechrome)。谷歌浏览器,是一款由谷歌(google)公司开发的网页浏览器。可以理解,由于,谷歌浏览器是日常使用较多的,各网页的开发人员在开发网页时,基本上都会采用谷歌浏览器对所开发的网页进行测试,以保证该网页能够被谷歌浏览器正常渲染,所以,谷歌浏览器对绝对多数网页都能够有很好的支持,属于支持网页通用渲染的浏览器。s208,通过浏览器,渲染与链接地址对应的目标网页的页面内容。其中,目标网页的页面内容,是对目标网页的原始的数据经过解析渲染后得到的、能够直接展示的页面内容。具体地,浏览器被调用后,可以根据链接地址获取相应的目标网页的数据,并对该目标网页的数据进行渲染,生成该目标网页的页面内容。可以理解,页面渲染就是浏览器将超文本标记语言(html,hypertextmarkuplanguage)代码根据层叠样式表(css,cascadingstylesheets)定义的规则进行页面绘制的过程。目标网页的页面内容,包括渲染后的建立层叠样式表数据和超文本标记语言数据。需要强调的是,本申请各实施例中,相当于在服务器端通过容器技术,安装浏览器,从而实现在服务器端爬取任何需要浏览器的脚本语言引擎计算才能生成的完整的页面内容。与传统方法在客户端安装浏览器是完全不同的处理。上述网页获取方法,在容器中运行所安装的用于获取页面内容的页面获取应用,通过该页面获取应用获取目标网页的链接地址。在容器中安装有浏览器,由页面获取应用调用容器中的浏览器,即可以通过浏览器渲染与所述链接地址对应的目标网页的页面内容。那么,最终获取的目标网页的页面内容,是经过浏览器渲染解析得到的,因此,相较于传统的基于http协议请求所获取的页面内容而言,更加地完整,从而提高了所获取的网页内容的准确性。此外,由于是调用容器中的浏览器渲染得到目标网页的页面内容,而浏览器相较于使用http协议请求页面内容而言,能够有效爬取包括单页面应用的网页在内的任何类型的网页,从而提高了网页获取成功率。在一个实施例中,步骤s204通过所述页面获取应用获取目标网页的链接地址包括:通过所述网页获取应用,获取页面请求方发送的页面请求;从所述页面请求中提取目标网页的链接地址。本实施例中,该方法还包括:向所述页面请求方返回渲染的所述页面内容。其中,页面请求方,是向页面获取应用请求获取页面内容的一方。页面请求,用于请求获取目标网页的页面内容。具体地,页面请求方可以生成针对目标网页的页面请求,并将页面请求发送至计算机设备。运行于计算机设备的容器中的网页获取应用可以提供一个端口,网页获取应用可以通过该端口接收该页面请求。计算机设备可以通过网页获取应用从该接收的页面请求中提取目标网页的链接地址。计算机设备在通过调用容器中的浏览器渲染与所述链接地址对应的所述目标网页的页面内容之后,可以向该页面请求方返回所渲染得到的目标网页的页面内容。可以理解,计算机设备可以通过页面获取应用直接返回渲染的html文档格式的目标网页的页面内容。在其他实施例中,计算机设备也可以通过页面获取应用将渲染的目标网页的页面内容进行格式转换处理,生成满足预设格式的页面内容。并返回该满足预设格式的页面内容。在一个实施例中,预设格式可以包括非编辑格式和可编辑格式。非编辑格式,是指不可编辑的格式。可编辑格式,是指能够编辑的格式。那么,返回的页面内容可以包括非编辑格式的页面内容和可编辑格式的页面内容中的至少一种。在一个实施例中,非编辑格式的页面内容可以是图片和便携式文档格式(pdf,portabledocumentformat)的页面内容。在一个实施例中,可编辑格式的页面内容,可以包括html格式的页面内容和txt文本格式的页面内容。需要说明的是,页面请求,是能够请求获取目标网页的页面内容的请求,但并不限定于仅用于请求获取页面内容。在一个实施例中,页面请求可以是网页爬取请求。即,页面请求方可以请求容器中的页面获取应用爬取目标网页的页面内容。那么,被调用的浏览器就可以充当爬虫工具,爬取渲染与所述链接地址对应的所述目标网页的页面内容。计算机设备可以将该渲染的页面内容向页面请求方进行返回。在一个实施例中,页面请求,也可以是用于进行网页漏洞检测的请求。即,该页面请求,用于请求获取目标网页的页面内容,并根据页面内容检测该目标网页是否存在漏洞。因此,计算机设备在获取到渲染的目标网页的页面内容后,可以根据该页面内容进行漏洞检测处理。具体地,当页面请求是用于进行网页漏洞检测的请求时,该页面请求中可以包括网页漏洞检测项,计算机设备可以通过调用的浏览器,按照链接地址,获取目标网页的与网页漏洞检测项的数据,并根据所获取的与网页漏洞检测项相应的数据进行漏洞检测处理。在一个实施例中,计算机设备可以检测所获取的与网页漏洞检测项相应的数据是否符合预期结果,当符合预期结果时,则说明该检测项不存在漏洞,当不符合预期结果时,则说明该检测项存在漏洞。在一个实施例中,页面请求,还可以是网页缓存请求。计算机设备在获取到渲染的目标网页的页面内容后,可以将该页面内容在本地进行缓存处理。这样一来,就可以在后续访问该目标网页时,从计算机设备的本地缓存中,直接获取目标网页的页面内容,避免多次网络交互造成的网络资源的浪费,而且能够提高访问效率。在一个实施例中,页面请求,还可以是快照生成请求。计算机设备在获取到渲染的目标网页的页面内容后,可以对该页面内容进行快照生成处理,以生成网页快照,并将网页快照在本地缓存。这样一来,当后续对目标网页的网络访问失败时,则可以直接从本地缓存中获取目标网页的网页快照,提高访问成功率,以及访问效率。可以理解,页面获取应用可以充当一个公共服务应用,对接多个第三方的页面请求方,这样一来,各个页面请求方皆可以向该页面获取应用请求想要获取的目标网页的页面内容。可以理解,公共服务应用,用于对多个页面请求方提供页面获取服务。上述实施例中,想要获取目标网页的页面内容的页面请求方,不需要自己进行复杂的页面获取处理,仅需要向服务器端的容器中充当公共服务应用的页面获取应用发送页面请求即可,页面获取应用即可以在服务器端调用容器中的浏览器解析渲染得到目标网页的完整的页面内容。既提高了获取的页面内容的准确性,又避免了每个页面请求方都耗费较多的资源来专门做繁复的页面获取处理,从而节省了资源。在一个实施例中,所述页面获取应用中设置了用于提供浏览器接口函数的函数库;所述浏览器接口函数,是安装于所述容器的浏览器的接口函数。本实施例中,步骤s206由所述页面获取应用,调用安装于所述容器中的浏览器包括:调用所述页面获取应用中的所述函数库所提供的浏览器接口函数;通过所述浏览器接口函数,调用所述浏览器。其中,函数库,是函数的集合。接口函数,是封装成api接口(applicationprogramminginterface,应用程序编程接口)的函数。浏览器的接口函数,是指浏览器的api接口的函数。具体地,计算机设备在页面获取应用中引入了函数库,该函数库能够提供安装于容器中的浏览器的接口函数,即能够提供浏览器接口函数。计算机设备可以通过调用该函数库所提供的浏览器接口函数,实现对安装于容器的该浏览器的调用。可以理解,浏览器被调用后,可以执行步骤s208,以渲染与链接地址对应的目标网页的页面内容。在一个实施例中,所述页面获取应用是在javascript开发平台中开发得到。安装于容器中的浏览器具备javascript引擎。函数库,则是该javascript开发平台的、且用于提供所述浏览器接口函数的库。可以理解,这种情况下,函数库,也是由javascript语言封装的。在一个实施例中,页面获取应用可以是使用node.js开发的。node.js是一个对第8版本的谷歌浏览器引擎进行封装得到的、且让javascript运行在服务器端的开发平台。在一个实施例中,浏览器可以是谷歌浏览器。在一个实施例中,函数库,可以是puppeteer库。puppeteer库,是谷歌公司官方出品的一个node.js的库。可以通过puppeteer库提供的api接口调用谷歌浏览器。图3为一个实施例中网页获取方法的架构示意图。参照图3,docker容器中运行有页面获取应用,页面获取应用中引入了函数库,容器中还安装有浏览器。页面获取应用可以开启端口,接收页面请求方发送的页面请求,从请求中获取目标网页的url地址。页面获取应用可以对函数库进行调用,可以通过函数库提供的浏览器接口函数调用浏览器,从而使得浏览器渲染与链接地址对应的所述目标网页的页面内容。计算机设备可以将渲染的目标网页的页面内容返回至页面请求方。上述实施例中,在页面获取应用中设置用于提供浏览器接口函数的函数库,这样一来,就可以通过页面获取应用直接调用该函数库所提供的浏览器接口函数,从而实现对容器中的浏览器的快速地、便捷地调用。在一个实施例中,页面获取应用中设置了函数库;函数库中包括用于调用安装于容器的浏览器的长连接服务的库函数。本实施例中,步骤s206由页面获取应用,调用安装于容器中的浏览器包括:根据库函数,调用浏览器的长连接服务的端口,与浏览器之间建立长连接;通过长连接调用浏览器。可以理解,本实施例中,函数库并不提供浏览器接口函数,而是由不同于浏览器的脚本语言的、另外一套脚本语言封装得到。比如,浏览器的脚本语言是javascript,而封装函数库的脚本语言是不同于javascript的脚本语言。这种情况下,计算机设备可以用该另外一套脚本语言封装一个能够调用安装于容器的浏览器的长连接服务的函数库。即,该函数库中包括包括用于调用安装于容器的浏览器的长连接服务的库函数。库函数,即为函数库中的函数。长连接,是指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。长连接服务,是用于实现长连接的服务程序。在一个实施例中,长连接,可以为基于tcp协议建立的连接。tcp(transmissioncontrolprotocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由ietf的rfc793定义。具体地,当页面获取应用中设置有用于提供浏览器接口函数的函数库时,则可以调用所述页面获取应用中的所述函数库所提供的浏览器接口函数;通过所述浏览器接口函数,调用所述浏览器。当页面获取应用中未设置用于提供浏览器接口函数的函数库时,而设置有能够调用安装于容器的浏览器的长连接服务的函数库时,计算机设备可以根据函数库中包括的用于调用安装于容器的浏览器的长连接服务的库函数,调用浏览器的长连接服务的端口,从而使得函数库与浏览器之间建立长连接,通过该长连接,即可以调用浏览器,以控制该浏览器渲染与所述链接地址对应的所述目标网页的页面内容。上述实施例中,页面获取应用中设置了用于调用安装于容器的浏览器的长连接服务的库函数,该库函数是使用的不同于浏览器的。这样一来,在没有浏览器官方提供的原装的用于提供浏览器接口函数的函数库时,也能够通过使用不同于浏览器的脚本语言的另一套脚本语言封装的库中的库函数,调用容器中的浏览器所暴露的长连接服务的端口建立长连接,基于该长连接同样能够实现对浏览器的调用。是一种新的对容器中的浏览器的调用方法,降低了对浏览器调用的局限性。在一个实施例中,通过浏览器,渲染链接地址对应的目标网页的页面内容包括:由浏览器按照链接地址,请求目标网页的数据;通过浏览器中的脚本语言引擎,对请求到的目标网页的数据进行计算组合,渲染生成目标网页的页面内容。具体地,浏览器可以按照链接地址,请求目标网页的数据。同样地,浏览器所请求到的目标网页的数据,是指目标网页未经过解析的、无法直接进行展示的原始数据。计算机设备可以通过浏览器中的脚本语言引擎,对请求到的目标网页的数据进行计算组合,使各数据分别位于相应的位置,从而组合生成目标网页的能够直接展示的完整的页面内容。可以理解,能够直接展示的完整的页面内容,包括渲染后的建立层叠样式表(css,cascadingstylesheets)数据和超文本标记语言(html,hypertextmarkuplanguage)数据。在一个实施例中,浏览器中的脚本语言引擎,可以是javascript引擎。上述实施例中,由浏览器按照链接地址,请求目标网页的数据;通过浏览器中的脚本语言引擎,对请求到的目标网页的数据进行计算组合,渲染生成目标网页的页面内容。经过浏览器的脚本语言引擎计算组合得到的页面内容,更加的完整,从而提高了页面内容获取的准确性。在一个实施例中,通过浏览器中的脚本语言引擎,对请求到的目标网页的数据进行计算组合,渲染生成目标网页的页面内容包括:通过所述浏览器中的脚本语言引擎,解析请求到的所述数据中的超文本标记语言标签,得到第一树形数据结构;解析所述数据中的层叠样式表,得到第二树形数据结构;组合第一树形数据结构和第二树形数据结构,构建渲染树;根据渲染树和数据中的页面元素,渲染目标网页的页面内容。其中,渲染树(rendertree),用来计算可见元素的布局并且作为将像素渲染绘制到页面上的过程的输入。具体地,计算机设备可以通过浏览器中的脚本语言引擎,对请求到的目标网页的数据进行语法解析,建立相应的内部数据结构。其中,内部数据结构中包括对层叠样式表(css)解析得到的第一树形数据结构和对超文本标记语言标签(html标签)进行解析得到的第二树形数据结构。计算机设备可以组合第一树形数据结构和第二树形数据结构,构建渲染树。目标网页的数据中包括页面元素。计算机设备可以在渲染树的基础上,对目标网页的数据中的各个页面元素进行位置计算和样式计算等处理。进而,计算机设备可以根据计算出的位置信息和样式信息,遍历渲染树,绘制每个页面元素。绘制完毕后,即可以得到完整的可用于直接展示的目标网页的页面内容。在一个实施例中,第一树形数据结构可以为层叠样式表对象模型(cssom,cascadingstylesheetsobjectmodel)树。第二树形数据结构,即为文档对象模型(dom,documentobjectmodel)树。在一个实施例中,浏览器中的脚本语言引擎,可以是javascript引擎。上述实施例中,通过浏览器中的脚本语言引擎,解析请求到的所述数据中的超文本标记语言标签,得到第一树形数据结构;解析所述数据中的层叠样式表,得到第二树形数据结构。从而能够充分地解析目标网页的数据,获取较为完整的页面数据。进而,组合第一树形数据结构和第二树形数据结构,构建渲染树;根据渲染树和数据中的页面元素,能够渲染出比较完整的目标网页的页面内容,从而提高了页面内容获取的准确性。如图4所示,在另一个实施例中,提供了一种网页获取方法,该方法可以应用于计算机设备,该计算机设备可以为图1中的服务器120。参照图2,该方法具体包括如下步骤:s402,在容器中运行页面获取应用。其中,页面获取应用是在javascript开发平台中开发得到。s404,通过网页获取应用,获取页面请求方发送的页面请求。s406,从页面请求中提取目标网页的链接地址。s408,调用页面获取应用中的函数库所提供的浏览器接口函数。其中,函数库,是开发平台的、且用于提供浏览器接口函数的库。s410,通过浏览器接口函数,调用安装于容器中的浏览器。其中,浏览器具备javascript引擎。浏览器的脚本语言为javascript。s412,由该浏览器按照链接地址,请求目标网页的数据。s414,通过浏览器中的脚本语言引擎,解析请求到的数据中的超文本标记语言标签,得到第一树形数据结构。s416,解析数据中的层叠样式表,得到第二树形数据结构。s418,组合第一树形数据结构和第二树形数据结构,构建渲染树。s420,根据渲染树和数据中的页面元素,渲染目标网页的页面内容。s422,向页面请求方返回渲染得到的目标网页的页面内容。上述网页获取方法,在容器中运行所安装的用于获取页面内容的页面获取应用,当页面获取应用接收到页面请求方发送的页面请求时,从页面请求中提取目标网页的链接地址。在容器中安装有浏览器,由页面获取应用调用容器中的浏览器,即可以通过浏览器渲染与所述链接地址对应的目标网页的页面内容。那么,最终获取的目标网页的页面内容,是经过浏览器渲染解析得到的,因此,相较于传统的基于http协议请求所获取的页面内容而言,更加地完整,从而提高了所获取的网页内容的准确性。图5为一个实施例中的网页获取方法的时序图。参照图5,该时序图具体包括以下步骤:(1)页面请求方通过容器中安装的页面获取应用所提供的端口,向页面获取应用发送针对目标网页的页面请求。(2)页面获取应用从所述页面请求中提取目标网页的链接地址。(3)页面获取应用调用函数库所提供的浏览器接口函数。(4)函数库通过该浏览器接口函数,调用安装于容器中的浏览器。(5)浏览器按照获取的链接地址,向目标网站请求目标网页的数据。(6)目标网页将所请求的数据返回至浏览器。(7)浏览器通过脚本语言引擎,对请求到的所述目标网页的数据进行计算组合,渲染生成所述目标网页的页面内容。(8)浏览器可以将渲染生成的目标网页的页面内容返回至页面获取应用。可以理解,浏览器可以通过函数库,将渲染生成的目标网页的页面内容返回至页面获取应用。(9)页面获取应用将渲染生成的目标网页的页面内容返回至页面请求方。上述网页获取方法,在容器中运行所安装的用于获取页面内容的页面获取应用,当页面获取应用接收到页面请求方发送的页面请求时,从页面请求中提取目标网页的链接地址。在容器中安装有浏览器,由页面获取应用调用容器中的浏览器,即可以通过浏览器渲染与所述链接地址对应的目标网页的页面内容。那么,最终获取的目标网页的页面内容,是经过浏览器渲染解析得到的,因此,相较于传统的基于http协议请求所获取的页面内容而言,更加地完整,从而提高了所获取的网页内容的准确性。可以理解,本申请各实施例中的网页获取方法,可以应用于多种产品形态中。比如,可以运用于搜索引擎、广告推荐、漏洞扫描、数据挖掘以及网页信息抽取等产品形态中。当应用于搜索引擎中时,在搜索引擎的后台服务器端中通过容器技术设置容器,并在容器中安装页面获取应用和浏览器,以及在页面获取应用中安装函数库。然后在搜索引擎的前端客户端发起网页搜索请求后,触发执行本申请各实施例中的网页获取方法,并将渲染后的目标网页的页面内容返回至前端客户端,以搜索到比较完整的目标网页的页面内容。当应用于广告推荐、漏洞扫描、数据挖掘或网页信息抽取等中时,同样地在后台服务器端通过容器技术设置容器,并在容器中安装页面获取应用和浏览器,以及在页面获取应用中安装函数库,以执行该本申请各实施例中的网页获取方法,并基于渲染后的目标网页的页面内容进行广告推荐、漏洞分析、数据挖掘以及网页信息抽取等处理。基于本申请各实施例中的网页获取方法得到的比较完整的页面内容进行相应处理,能够提高处理的准确性。如图6所示,在一个实施例中,提供了一种网页获取装置600,该装置600包括:获取模块602、调用模块604以及渲染模块606,其中:获取模块602,用于在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址。调用模块604,用于由所述页面获取应用,调用安装于所述容器中的浏览器。渲染模块606,用于通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。如图7所示,在一个实施例中,获取模块602还用于通过所述网页获取应用,获取页面请求方发送的页面请求;从所述页面请求中提取目标网页的链接地址。本实施例中,该装置600还包括:返回模块608,用于向所述页面请求方返回渲染的所述页面内容。在一个实施例中,所述页面获取应用中设置了用于提供浏览器接口函数的函数库;所述浏览器接口函数,是安装于所述容器的浏览器的接口函数;调用模块604还用于调用所述页面获取应用中的所述函数库所提供的浏览器接口函数;通过所述浏览器接口函数,调用所述浏览器。在一个实施例中,所述页面获取应用是在javascript开发平台中开发得到;所述浏览器具备javascript引擎;所述函数库,是所述javascript开发平台的、且用于提供所述浏览器接口函数的库。在一个实施例中,所述页面获取应用中设置有函数库;所述函数库中包括用于调用安装于容器的浏览器的长连接服务的库函数。调用模块604还用于根据所述库函数,调用所述浏览器的长连接服务的端口,与所述浏览器之间建立长连接;通过所述长连接调用所述浏览器。在一个实施例中,渲染模块606还用于由所述浏览器按照所述链接地址,请求所述目标网页的数据;通过所述浏览器中的脚本语言引擎,对请求到的所述目标网页的数据进行计算组合,渲染生成所述目标网页的页面内容。在一个实施例中,渲染模块606还用于通过所述浏览器中的脚本语言引擎,解析请求到的所述数据中的超文本标记语言标签,得到第一树形数据结构;解析所述数据中的层叠样式表,得到第二树形数据结构;组合所述第一树形数据结构和第二树形数据结构,构建渲染树;根据所述渲染树和所述数据中的页面元素,渲染所述目标网页的页面内容。上述网页获取装置,在容器中运行所安装的用于获取页面内容的页面获取应用,通过该页面获取应用获取目标网页的链接地址。在容器中安装有浏览器,由页面获取应用调用容器中的浏览器,即可以通过浏览器渲染与所述链接地址对应的目标网页的页面内容。那么,最终获取的目标网页的页面内容,是经过浏览器渲染解析得到的,因此,相较于传统的基于http协议请求所获取的页面内容而言,更加地完整,从而提高了所获取的网页内容的准确性。图8为一个实施例中计算机设备的内部结构示意图。参照图8,该计算机设备可以是图1中服务器120。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质可存储操作系统和计算机程序。该计算机程序被执行时,可使得处理器执行一种网页获取方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种网页获取方法。计算机设备的网络接口用于进行网络通信。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,本申请提供的网页获取装置可以实现为一种计算机程序的形式,计算机程序可在如图8所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该网页获取装置的各个程序模块,比如,图6所示的获取模块602、调用模块604以及渲染模块606。各个程序模块所组成的计算机程序用于使该计算机设备执行本说明书中描述的本申请各个实施例的网页获取方法中的步骤,例如,计算机设备可以通过如图6所示的网页获取装置600中的获取模块602在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址。计算机设备可以通过调用模块604由所述页面获取应用,调用安装于所述容器中的浏览器。计算机设备可以通过渲染模块606通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址;由所述页面获取应用,调用安装于所述容器中的浏览器;通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。在一个实施例中,所述通过所述页面获取应用获取目标网页的链接地址包括:通过所述网页获取应用,获取页面请求方发送的页面请求;从所述页面请求中提取目标网页的链接地址。本实施例中,计算机程序被处理器执行时,还使得处理器执行以下步骤:向所述页面请求方返回渲染的所述页面内容。在一个实施例中,所述页面获取应用中设置了用于提供浏览器接口函数的函数库;所述浏览器接口函数,是安装于所述容器的浏览器的接口函数;所述由所述页面获取应用,调用安装于所述容器中的浏览器包括:调用所述页面获取应用中的所述函数库所提供的浏览器接口函数;通过所述浏览器接口函数,调用所述浏览器。在一个实施例中,所述页面获取应用是在javascript开发平台中开发得到;所述浏览器具备javascript引擎;所述函数库,是所述javascript开发平台的、且用于提供所述浏览器接口函数的库。在一个实施例中,所述页面获取应用中设置有函数库;所述函数库中包括用于调用安装于容器的浏览器的长连接服务的库函数;所述由所述页面获取应用,调用安装于所述容器中的浏览器包括:根据所述库函数,调用所述浏览器的长连接服务的端口,与所述浏览器之间建立长连接;通过所述长连接调用所述浏览器。在一个实施例中,所述通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容包括:由所述浏览器按照所述链接地址,请求所述目标网页的数据;通过所述浏览器中的脚本语言引擎,对请求到的所述目标网页的数据进行计算组合,渲染生成所述目标网页的页面内容。在一个实施例中,所述通过所述浏览器中的脚本语言引擎,对请求到的所述目标网页的数据进行计算组合,渲染生成所述目标网页的页面内容包括:通过所述浏览器中的脚本语言引擎,解析请求到的所述数据中的超文本标记语言标签,得到第一树形数据结构;解析所述数据中的层叠样式表,得到第二树形数据结构;组合所述第一树形数据结构和第二树形数据结构,构建渲染树;根据所述渲染树和所述数据中的页面元素,渲染所述目标网页的页面内容。在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:在容器中运行页面获取应用;所述页面获取应用,是安装于所述容器的用于获取页面内容的应用程序;通过所述页面获取应用获取目标网页的链接地址;由所述页面获取应用,调用安装于所述容器中的浏览器;通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容。在一个实施例中,所述通过所述页面获取应用获取目标网页的链接地址包括:通过所述网页获取应用,获取页面请求方发送的页面请求;从所述页面请求中提取目标网页的链接地址。本实施例中,计算机程序被处理器执行时,还使得处理器执行以下步骤:向所述页面请求方返回渲染的所述页面内容。在一个实施例中,所述页面获取应用中设置了用于提供浏览器接口函数的函数库;所述浏览器接口函数,是安装于所述容器的浏览器的接口函数;所述由所述页面获取应用,调用安装于所述容器中的浏览器包括:调用所述页面获取应用中的所述函数库所提供的浏览器接口函数;通过所述浏览器接口函数,调用所述浏览器。在一个实施例中,所述页面获取应用是在javascript开发平台中开发得到;所述浏览器具备javascript引擎;所述函数库,是所述javascript开发平台的、且用于提供所述浏览器接口函数的库。在一个实施例中,所述页面获取应用中设置有函数库;所述函数库中包括用于调用安装于容器的浏览器的长连接服务的库函数;所述由所述页面获取应用,调用安装于所述容器中的浏览器包括:根据所述库函数,调用所述浏览器的长连接服务的端口,与所述浏览器之间建立长连接;通过所述长连接调用所述浏览器。在一个实施例中,所述通过所述浏览器,渲染与所述链接地址对应的所述目标网页的页面内容包括:由所述浏览器按照所述链接地址,请求所述目标网页的数据;通过所述浏览器中的脚本语言引擎,对请求到的所述目标网页的数据进行计算组合,渲染生成所述目标网页的页面内容。在一个实施例中,所述通过所述浏览器中的脚本语言引擎,对请求到的所述目标网页的数据进行计算组合,渲染生成所述目标网页的页面内容包括:通过所述浏览器中的脚本语言引擎,解析请求到的所述数据中的超文本标记语言标签,得到第一树形数据结构;解析所述数据中的层叠样式表,得到第二树形数据结构;组合所述第一树形数据结构和第二树形数据结构,构建渲染树;根据所述渲染树和所述数据中的页面元素,渲染所述目标网页的页面内容。需要说明的是,本申请各实施例中的“第一”和“第二”等仅用作区分,而并不用于大小、先后、从属等方面的限定。应该理解的是,虽然本申请各实施例中的各个步骤并不是必然按照步骤标号指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1