一种资源链接获取方法、装置、电子设备及存储介质转让专利

申请号 : CN202011611421.X

文献号 : CN112632358B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 熊毅

申请人 : 北京天融信网络安全技术有限公司北京天融信科技有限公司北京天融信软件有限公司

摘要 :

本申请提供一种资源链接获取方法、装置、电子设备及存储介质,该方法包括:获取访问链接对应的待处理网页;查找待处理网页中所有文档节点存在的事件,并将文档节点存在的事件存储至待处理队列;使用无头浏览器以多线程的方式模拟触发待处理队列中的事件;拦截待处理队列中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。在上述的实现过程中,通过将网页中存在的事件存储至待处理队列,再触发和拦截待处理队列中的事件,有效地避免了网页页面多次跳转、页面重新渲染和多次弹出新的页面等等情况,同时也避免了这些情况带来的计算资源和带宽资源的过度消耗,从而有效地节约了计算资源和带宽资源。

权利要求 :

1.一种资源链接获取方法,其特征在于,包括:获取访问链接对应的待处理网页;

查找所述待处理网页中所有文档节点存在的事件,并将所述文档节点存在的事件存储至待处理队列;

使用无头浏览器以多线程的方式模拟触发所述待处理队列中的事件;

拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接;

其中,所述拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接,包括:使用运行中的代理进程以全局代理方式或者局部代理方式,针对所述待处理队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取所述资源请求中的资源链接。

2.根据权利要求1所述的方法,其特征在于,所述获取访问链接对应的待处理网页,包括:

获取所述访问链接;

使用所述无头浏览器加载所述访问链接,并将所述访问链接对应的返回数据动态渲染为所述待处理网页。

3.根据权利要求1所述的方法,其特征在于,在所述获取所述资源请求中的资源链接之后,还包括:

使用预先设置的路由规则对所述资源链接进行过滤。

4.根据权利要求1所述的方法,其特征在于,在所述获取所述资源请求中的资源链接之后,还包括:

若所述资源链接的链接类型为网页链接,则将所述资源链接确定为所述访问链接,并返回执行所述获取访问链接对应的待处理网页的步骤。

5.根据权利要求1所述的方法,其特征在于,在所述获取所述资源请求中的资源链接之后,还包括:

判断在资源类型列表中是否查找到所述资源链接中的文件后缀;

若是,则将所述资源类型列表中所述文件后缀对应的链接类型确定所述资源链接的链接类型。

6.根据权利要求5所述的方法,其特征在于,在所述判断在资源类型列表中是否查找到所述资源链接中的文件后缀之后,还包括:若在所述资源类型列表中没有查找到所述资源链接中的文件后缀,则根据所述资源请求对应的响应头部信息确定所述资源链接的链接类型。

7.一种资源链接获取装置,其特征在于,包括:处理网页获取模块,用于获取访问链接对应的待处理网页;

事件查找存储模块,用于查找所述待处理网页中所有文档节点存在的事件,并将所述文档节点存在的事件存储至待处理队列;

事件模拟触发模块,用于使用无头浏览器以多线程的方式模拟触发所述待处理队列中的事件;

资源链接获取模块,用于拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接;

其中,所述拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接,包括:使用运行中的代理进程以全局代理方式或者局部代理方式,针对所述待处理队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取所述资源请求中的资源链接。

8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的方法。

9.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的方法。

说明书 :

一种资源链接获取方法、装置、电子设备及存储介质

技术领域

[0001] 本申请涉及网络安全和网络通信的技术领域,具体而言,涉及一种资源链接获取方法、装置、电子设备及存储介质。

背景技术

[0002] 目前,使用爬虫在公开网页中抓取资源链接的过程中,常常发生网页页面多次跳转、页面重新渲染和多次弹出新的页面等等情况,这些情况导致浏览器运行很多不必要的
进程资源或线程资源,同时,多次加载和跳转请求获取网页也会造成带宽资源的浪费。因
此,使用现有的爬虫在公开网页中抓取资源链接的过程中存在计算资源和带宽资源过度消
耗的问题。

发明内容

[0003] 本申请实施例的目的在于提供一种资源链接获取方法、装置、电子设备及存储介质,用于改善在公开网页中抓取资源链接的过程中存在计算资源和带宽资源过度消耗的问
题。
[0004] 本申请实施例提供了一种资源链接获取方法,包括:获取访问链接对应的待处理网页;查找待处理网页中所有文档节点存在的事件,并将文档节点存在的事件存储至待处
理队列;使用无头浏览器以多线程的方式模拟触发待处理队列中的事件;拦截待处理队列
中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。在上述的实现过
程中,通过将网页中存在的事件存储至待处理队列,再触发和拦截待处理队列中的事件,有
效地拦截到事件在触发过程中产生的资源请求,避免了网页页面多次跳转、页面重新渲染
和多次弹出新的页面等等情况,同时也避免了这些情况带来的计算资源和带宽资源的过度
消耗,从而有效地节约了计算资源和带宽资源。
[0005] 可选地,在本申请实施例中,获取访问链接对应的待处理网页,包括:获取访问链接;使用无头浏览器加载访问链接,并将访问链接对应的返回数据动态渲染为待处理网页。
在上述的实现过程中,通过使用无头浏览器加载和渲染为待处理网页,由于无头浏览器可
以动态地渲染网站网页,无头浏览器是无界面的且支持程序化的集成引擎,从而更加地节
省计算资源,减小了使用有图形的浏览器来加载和渲染网页导致卡顿的概率。
[0006] 可选地,在本申请实施例中,资源链接获取模块,具体用于:针对待处理队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取资源请求中的资源链接。
[0007] 可选地,在本申请实施例中,拦截待处理队列中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接,包括:针对待处理队列中的事件在触发过程中产生的
资源请求进行代理拦截,并获取资源请求中的资源链接。在上述的实现过程中,针对待处理
队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取资源请求中的资源链
接,有效地增加拦截和获取资源链接的速度,提高处理资源请求的性能。
[0008] 可选地,在本申请实施例中,在获取资源请求中的资源链接之后,还包括:使用预先设置的路由规则对资源链接进行过滤。在上述的实现过程中,通过使用预先设置的路由
规则对资源链接进行过滤,有效地过滤掉资源链接中不相关的链接,同时基于不同的路由
分发规则进行链接分发,从而有效地提高了对资源链接进行过滤的灵活性。
[0009] 可选地,在本申请实施例中,在获取资源请求中的资源链接之后,还包括:若资源链接的链接类型为网页链接,则将资源链接确定为访问链接,并返回执行获取访问链接对
应的待处理网页的步骤。在上述的实现过程中,通过在资源链接的链接类型为网页链接时,
根据资源链接作为访问链接进行深度爬取,从而获得更多的资源链接。
[0010] 可选地,在本申请实施例中,在获取资源请求中的资源链接之后,还包括:判断在资源类型列表中是否查找到资源链接中的文件后缀;若是,则将资源类型列表中文件后缀
对应的链接类型确定资源链接的链接类型。在上述的实现过程中,通过根据资源类型列表
中文件后缀对应的链接类型来确定资源链接的链接类型,从而避免了每个资源链接都通过
完整的响应信息来确定链接类型,从而有效地提高了确定链接类型的速度。
[0011] 可选地,在本申请实施例中,在判断在资源类型列表中是否查找到资源链接中的文件后缀之后,还包括:若在资源类型列表中没有查找到资源链接中的文件后缀,则根据资
源请求对应的响应头部信息确定资源链接的链接类型。在上述的实现过程中,通过根据资
源请求对应的响应头部信息确定资源链接的链接类型,从而避免了根据无法匹配到文件后
缀时,确定链接类型错误的情况,有效地提高了确定资源链接的链接类型的准确率。
[0012] 本申请实施例还提供了一种资源链接获取装置,包括:处理网页获取模块,用于获取访问链接对应的待处理网页;事件查找存储模块,用于查找待处理网页中所有文档节点
存在的事件,并将文档节点存在的事件存储至待处理队列;事件模拟触发模块,用于使用无
头浏览器以多线程的方式模拟触发待处理队列中的事件;资源链接获取模块,用于拦截所
述待处理队列中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。
[0013] 可选地,在本申请实施例中,处理网页获取模块,包括:访问链接获取模块,用于获取访问链接;访问网页渲染模块,用于使用无头浏览器加载访问链接,并将访问链接对应的
返回数据动态渲染为待处理网页。
[0014] 可选地,在本申请实施例中,资源链接获取装置,还包括:资源链接过滤模块,用于使用预先设置的路由规则对资源链接进行过滤。
[0015] 可选地,在本申请实施例中,资源链接获取装置,还包括:访问链接确定模块,用于若资源链接的链接类型为网页链接,则将资源链接确定为访问链接,并返回执行获取访问
链接对应的待处理网页的步骤。
[0016] 可选地,在本申请实施例中,资源链接获取装置,还包括:后缀查找判断模块,用于判断在资源类型列表中是否查找到资源链接中的文件后缀;第一类型确定模块,用于若在
资源类型列表中查找到资源链接中的文件后缀,则将资源类型列表中文件后缀对应的链接
类型确定资源链接的链接类型。
[0017] 可选地,在本申请实施例中,资源链接获取装置,还包括:第二类型确定模块,用于若在资源类型列表中没有查找到资源链接中的文件后缀,则根据资源请求对应的响应头部
信息确定资源链接的链接类型。
[0018] 本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
[0019] 本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上面描述的方法。

附图说明

[0020] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看
作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
[0021] 图1示出的本申请实施例提供的资源链接获取方法的流程示意图;
[0022] 图2示出的本申请实施例提供的根据资源链接后缀确定链接类型的流程示意图;
[0023] 图3示出的本申请实施例提供的资源链接获取装置的结构示意图;
[0024] 图4示出的本申请实施例提供的电子设备的结构示意图。

具体实施方式

[0025] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
[0026] 在介绍本申请实施例提供的资源链接获取方法之前,先介绍本申请实施例中所涉及的一些概念:
[0027] 无头浏览器指的是没有图形用户界面的浏览器;无头浏览器在类似于流行网络浏览器的环境中提供对网页的自动控制,但是通过命令行界面或使用网络通信来执行。
[0028] WebDriver工具是一款开源软件,WebDriver可以通过定义驱动引擎的方式来控制不同的浏览器(如Firefox,Chrome,Safari,IE),WebDriver可以打开URL与渲染出的页面进
行交互;WebDriver的目标是提供一套精心设计的面向对象的应用程序接口(Application 
Programming Interface,API),从而更好地支持现代高级web应用的测试工作。
[0029] 需要说明的是,本申请实施例提供的资源链接获取方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者服务器,服务器是指通过网络
提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型
机、小型机和UNIX服务器。
[0030] 在介绍本申请实施例提供的资源链接获取方法之前,先介绍该资源链接获取方法适用的应用场景,这里的应用场景包括但不限于:使用该资源链接获取方法来改进资源链
接获取产品的功能,避免资源链接获取产品在获取资源链接的过程中产生的网页页面多次
跳转、页面重新渲染和多次弹出新的页面等等情况,此处的资源链接获取产品包括但不限
于:爬虫软件、雷达软件、资源下载软件和搜索引擎爬虫机器等等。
[0031] 请参见图1示出的本申请实施例提供的资源链接获取方法的流程示意图;该资源链接获取方法的主要思路是,通过将网页中存在的事件存储至待处理队列,再触发和拦截
待处理队列中的事件,有效地拦截到事件在触发过程中产生的资源请求,避免了网页页面
多次跳转、页面重新渲染和多次弹出新的页面等等情况,同时也避免了这些情况带来的计
算资源和带宽资源的过度消耗,从而有效地节约了计算资源和带宽资源;上述的资源链接
获取方法可以包括:
[0032] 步骤S110:获取访问链接对应的待处理网页。
[0033] 上述步骤S110中的访问链接的获得方式有很多种,包括但不限于这几种:第一种获得方式,启动N个爬虫引擎的线程(例如启动10个爬虫引擎的线程,这10个是在配置文件
中事先配置的),并初始化爬虫引擎,然后使用爬虫引擎接收其它终端设备发送的多个访问
链接,此处的访问链接都是网站页面类型的链接,即能够返回网站页面的链接;然后,将访
问链接的域名作为参数在事先建立的数据库中进行查询,获得该域名的连通速度,将该域
名的连通速度作为访问链接的连通性的评价指标,从而预判多个访问链接的连通性;最后,
将连通速度大于预设阈值的访问链接存储至文件系统、数据库或移动存储设备中;其中,预
设阈值可以根据具体实际情况进行设置,例如设置为5秒、8秒或10秒等等。第二种获得方
式,获取预先存储的访问链接,具体例如:从文件系统中获取访问链接,或者从数据库中获
取访问链接,或者从移动存储设备中获取访问链接。
[0034] 上述步骤S110中的获取访问链接对应的待处理网页的实施方式有很多种,包括但不限于如下几种:
[0035] 第一种实施方式,使用无头(Headless)浏览器加载访问链接获取待处理网页,该实施方式具体例如:获取访问链接;使用无头浏览器加载访问链接,并在加载访问链接对应
的返回数据后,将访问链接对应的返回数据动态渲染为待处理网页,可以捕获并存储在动
态渲染过程中产生的动态链接地址;其中,具体可以使用的无头浏览器包括:PhantomJS浏
览器、无头模式的Chrome浏览器和无头模式的Firefox浏览器等等;返回数据包括但不限
于:可加载执行JavaScript脚本、CSS的样式文件和图片文件等等。
[0036] 第二种实施方式,使用程序控制的浏览器加载访问链接获取待处理网页,该实施方式具体例如:使用Selenium中的程序、jQuery程序或者WebDriver工具中的程序获取访问
链接,并使用该程序控制浏览器加载访问链接,并将访问链接对应的返回数据动态渲染为
待处理网页;其中,可以使用的浏览器包括:Microsoft Edge浏览器、Google Chrome浏览
器、Mozilla Firefox浏览器、Opera浏览器、Safari浏览器和Firefox浏览器等等。
[0037] 第三种实施方式,结合第一种实施方式和第二种实施方式,使用程序控制无头浏览器加载访问链接获取待处理网页,该实施方式具体例如:使用Selenium工具控制
PhantomJS浏览器加载访问链接,并将访问链接对应的返回数据动态渲染为待处理网页,可
以捕获并存储在动态渲染过程中产生的动态链接地址;其中,返回数据包括但不限于:可加
载执行JavaScript脚本、CSS的样式文件和图片文件等等。
[0038] 在步骤S110之后,执行步骤S120:查找待处理网页中所有文档节点存在的事件,并将文档节点存在的事件存储至待处理队列。
[0039] 文档节点,是指文档对象模型(document object model,DOM)中的节点,因此又被简称为DOM节点,此处的DOM是指描述一个可扩展标记语言(eXtensible Markup Language,
XML)文档解析结果的树型结构的内部数据模型;一个XML文档可以包括根节点、内部节点、
叶子节点、备注节点等。
[0040] 上述步骤S120的实施方式有很多种,包括但不限于如下几种:
[0041] 第一种实施方式,使用Python程序、Selenium工具和WebDriver工具来查找和存储文档节点存在的事件;该实施方式例如:使用Python程序中的正则表达式、XPath和
BeautifulSoup程序套件来查找待处理网页中所有文档节点存在的事件,并使用WebDriver
工具和Selenium工具将文档节点存在的事件存储至待处理队列。
[0042] 第二种实施方式,使用JavaScript程序和jQuery程序来查找和存储文档节点存在的事件;该实施方式例如:在待处理网页动态渲染完成之后,可以使用jQuery中的选择器选
择出可能存在事件的DOM节点;再然后,判断该DOM节点是否绑定有事件;若该DOM节点绑定
有事件,则使用JavaScript程序提取出该DOM节点的事件,并将DOM节点的事件存储至待处
理队列;其中,此处的事件包括但不限于:待处理网页中的超链接点击事件、表单点击事件、
鼠标点击事件和键盘点击事件等等;上述的待处理队列可以使用链表或者数组来具体实
现,待处理队列也可以是一个固定大小的循环队列。
[0043] 在步骤S120之后,执行步骤S130:使用无头浏览器以多线程的方式模拟触发待处理队列中的事件。
[0044] 上述的步骤S130的实施方式包括:使用Selenium工具控制启动无头浏览器,并以多个线程的方式来模拟触发待处理队列中的事件,可以使用的无头浏览器包括:PhantomJS
浏览器、无头模式的Chrome浏览器和无头模式的Firefox浏览器等等。
[0045] 在上述的实现过程中,通过使用无头浏览器加载和动态渲染为待处理网页,由于无头浏览器可以动态地渲染网站网页,无头浏览器是无界面的且支持程序化的集成引擎,
从而更加地节省计算资源,减小了使用有图形的浏览器来加载和渲染网页导致卡顿的概
率。
[0046] 在步骤S130之后,执行步骤S140:拦截待处理队列中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。
[0047] 上述步骤S140的实施方式有很多种,包括但不限于如下几种:
[0048] 第一种实施方式,使用程序来进行拦截并获取资源请求中的资源链接,具体例如:使用Python程序拦截待处理队列中的事件在触发过程中产生的资源请求,并使用
JavaScript脚本、jQuery和Python等程序获取资源请求中的资源链接,或者,使用Python程
序中的正则表达式、XPath和BeautifulSoup程序套件来获取资源请求中的资源链接,或者,
使用Node.js和puppeteer等工具来获取资源请求中的资源链接。
[0049] 第二种实施方式,使用代理进程来进行拦截并获取页面请求资源请求中的资源链接,具体例如:启动代理软件,代理软件在启动后会运行至少一个代理进程,针对待处理队
列中的事件在触发过程中产生的资源请求进行代理拦截,并获取资源请求中的资源链接;
其中,此处的代理软件包括但不限于:easy connect软件等等;上述的针对待处理队列中的
事件在触发过程中产生的资源请求进行代理拦截的方式包括:第一种代理拦截方式,全局
代理拦截,具体例如:使用运行中的代理进程拦截待处理队列中的事件在触发过程中产生
的资源请求,此处的代理进程既可以代理拦截无头浏览器的资源请求,也可以代理拦截其
它软件进程产生的资源请求;第二中代理拦截方式,局部代理拦截,具体例如:启动无头浏
览器的代理进程,并使用该无头浏览器的代理进程拦截无头浏览器产生的所有资源请求。
[0050] 在获取资源请求中的资源链接之后,若判断出该资源链接的链接类型是网页链接,则可以使用爬虫程序对网页链接进行深度爬取,即以获取到的资源链接重复执行上述
步骤S110至步骤S140,就可以获得更多的资源链接,具体例如:若资源链接的链接类型为网
页链接,则将资源链接确定为访问链接,并返回执行步骤S110中的获取访问链接对应的待
处理网页。
[0051] 在上述的实现过程中,先查找待处理网页中所有文档节点存在的事件,并将文档节点存在的事件存储至待处理队列;然后,使用无头浏览器以多线程的方式模拟触发待处
理队列中的事件,并拦截待处理队列中的事件在触发过程中产生的资源请求。也就是说,通
过将网页中存在的事件存储至待处理队列,再触发和拦截待处理队列中的事件,有效地拦
截到事件在触发过程中产生的资源请求,避免了网页页面多次跳转、页面重新渲染和多次
弹出新的页面等等情况,同时也避免了这些情况带来的计算资源和带宽资源的过度消耗,
从而有效地节约了计算资源和带宽资源。
[0052] 请参见图2示出的本申请实施例提供的根据资源链接后缀确定链接类型的流程示意图;可选地,在获取资源请求中的资源链接之后,还可以根据具体需求对资源链接进行过
滤,该实施方式可以包括:
[0053] 步骤S210:使用预先设置的路由规则对资源链接进行过滤。
[0054] 路由规则,是指根据业务需求关注所需要的链接,对链接进行过滤的规则,因此,此处的路由规则也可以理解为过滤规则;具体例如:若在业务需求中,需要关注后缀为html
的资源链接,则可以使用后缀路由来对资源链接进行过滤,或者,若在业务需求中只关注界
面内点击事件所产生的资源链接,则使用事件路由来对资源链接进行过滤。
[0055] 上述步骤S210的实施方式例如:使用预先设置的后缀路由、域名路由、事件路由、正则路由和/或默认路由等等路由规则对资源链接进行过滤;若配置有路由规则的优先级,
则按照配置的路由规则优先级来对资源链接进行过滤匹配。在没有配置路由规则的优先级
的情况下,默认的优先级从大到小的排列为:后缀路由、域名路由、事件路由、正则路由和默
认路由;其中,此处的后缀路由是指基于请求路径后缀名称来匹配资源链接的规则,当然在
后缀路由匹配过程中可以使用通配符,具体例如:在后缀路由过程中,若需要明确请求链接
后缀字符串如html或js,则可以通过以“*”号开头或结尾的通配符方式来过滤资源链接。上
述的域名路由是指基于资源链接对应请求路径的域名来匹配资源链接地址,域名路由可以
支持当前域名以及该域名下的子域名。上述的事件路由是指筛选指定触发事件产生的资源
链接对应的请求地址,具体例如:根据鼠标事件(单击、双击、鼠标移入移除等)或者键盘事
件(按下某一个健)来过滤资源链接,该事件的属性来源是爬虫引擎模拟触发事件后提供
的。上述的正则路由是指采用正则表达式的方式匹配请求地址,该正则表达式为通用正则
表达式,可以用来应对复杂的路径匹配。上述的默认路由是指,在未匹配到其它路由规则
后,所有请求将都经过该路由的规则,这是一种默认(defalut)的路由模式,当未开启默认
路由,且其它路由规则也均未匹配上,该资源链接对应的请求地址将被标记丢弃。
[0056] 可选地,在获取资源请求中的资源链接之后,还可以对资源链接的链接类型进行分类,即确定该资源链接的链接类型的过程可以包括:
[0057] 步骤S220:判断在资源类型列表中是否查找到资源链接中的文件后缀。
[0058] 其中,文件后缀包括:图片文件的后缀和/或视频文件的后缀;图片文件的后缀包括:JPG、JPEG、PNG和GIF等等,视频文件的后缀包括:MP4、flv、MPG和MPEG等等。
[0059] 上述步骤S220的实施方式例如:资源类型列表可以采用关系型数据库或者非关系数据库中的资源类型数据表,在数据记录不多的情况下,也可以采用Excel文件中的资源类
型列表;首先,从资源链接中分割并提取出文件后缀,具体可以使用斜杠线作为分割符对资
源链接字符串进行分割,然后提取出分割后的字符串数组的最后字符串,使用点作为分割
符以同样的方式对最后字符串进行分割,获得文件后缀;然后在关系型数据库或者非关系
数据库中的资源类型数据表中查找资源链接中的文件后缀,判断在资源类型列表中是否查
找到资源链接中的文件后缀;其中,可以使用的关系型数据库例如:Mysql、PostgreSQL、
Oracle和SQLSever等;可以使用的非关系型数据库包括:grakn数据库、Neo4j图数据库、
Hadoop子系统HBase、MongoDB和CouchDB等。
[0060] 在步骤S220之后,可以执行步骤S230:若在资源类型列表中查找到资源链接中的文件后缀,则将资源类型列表中文件后缀对应的链接类型确定资源链接的链接类型。
[0061] 上述步骤S230的实施方式包括:假设资源类型列表中记录了后缀为MP4、flv、MPG或MPEG的资源链接对应的链接类型为视频链接,也记录了后缀为JPG、JPEG、PNG和GIF的资
源链接对应的链接类型为图片链接,也记录了后缀为htm和HTML的资源链接对应的链接类
型为网页链接,也就是说,资源类型列表中记录了文件后缀与链接类型的映射关系,可以通
过文件后缀与链接类型的映射关系来确定出具体的文件后缀对应的链接类型;若在资源类
型列表中查找到资源链接中的文件后缀(例如MP4),则将资源类型列表中文件后缀对应的
链接类型(例如视频链接)确定资源链接的链接类型(例如视频链接)。
[0062] 在步骤S220之后,还可以执行步骤S240:若在资源类型列表中没有查找到资源链接中的文件后缀,则根据资源请求对应的响应头部信息确定资源链接的链接类型。
[0063] 上述步骤S240的实施方式例如:若在资源类型列表中没有查找到资源链接中的文件后缀,则电子设备向该资源链接对应的服务器发送该资源链接对应的资源请求,以使该
服务器根据该资源请求返回对应的响应头部信息;然后,电子设备接收该服务器返回的响
应头部信息,并根据该资源请求对应的响应头部信息确定资源链接的链接类型。在上述的
实现过程中,通过使用预先设置的路由规则对资源链接进行过滤,有效地过滤掉资源链接
中不相关的链接,同时基于不同的路由分发规则进行链接分发,从而有效地提高了对资源
链接进行过滤的灵活性。
[0064] 可选地,在确定资源链接的链接类型之后,还可以根据资源链接的链接类型来进行相应的操作,该实施方式包括:若资源链接的链接类型为图片链接,则根据资源链接下载
对应的文件,获得图片文件;若资源链接的链接类型为视频链接,则根据资源链接下载对应
的文件,获得视频文件;若资源链接的链接类型为网页链接,则使用爬虫程序对网页链接进
行深度爬取,即以获取到的资源链接重复执行上述步骤S110至步骤S140,就可以获得更多
的资源链接。在上述的实现过程中,通过在资源链接的链接类型为网页链接时,根据资源链
接作为访问链接进行深度爬取,从而获得更多的资源链接。
[0065] 请参见图3示出的本申请实施例提供的资源链接获取装置的结构示意图;本申请实施例提供了一种资源链接获取装置300,包括:
[0066] 处理网页获取模块310,用于获取访问链接对应的待处理网页。
[0067] 事件查找存储模块320,用于查找待处理网页中所有文档节点存在的事件,并将文档节点存在的事件存储至待处理队列。
[0068] 事件模拟触发模块330,用于使用无头浏览器以多线程的方式模拟触发待处理队列中的事件。
[0069] 资源链接获取模块340,用于拦截待处理队列中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。
[0070] 可选地,在本申请实施例中,处理网页获取模块,包括:
[0071] 访问链接获取模块,用于获取访问链接。
[0072] 访问网页渲染模块,用于使用无头浏览器加载访问链接,并将访问链接对应的返回数据动态渲染为待处理网页。
[0073] 可选地,在本申请实施例中,资源链接获取模块,具体可以用于:针对待处理队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取资源请求中的资源链接。
[0074] 可选地,在本申请实施例中,资源链接获取装置,还包括:
[0075] 资源链接过滤模块,用于使用预先设置的路由规则对资源链接进行过滤。
[0076] 可选地,在本申请实施例中,该资源链接获取装置,还包括:
[0077] 访问链接确定模块,用于若资源链接的链接类型为网页链接,则将资源链接确定为访问链接,并返回执行获取访问链接对应的待处理网页的步骤。
[0078] 可选地,在本申请实施例中,资源链接获取装置,还可以包括:
[0079] 后缀查找判断模块,用于判断在资源类型列表中是否查找到资源链接中的文件后缀。
[0080] 第一类型确定模块,用于若在资源类型列表中查找到资源链接中的文件后缀,则将资源类型列表中文件后缀对应的链接类型确定资源链接的链接类型。
[0081] 可选地,在本申请实施例中,该资源链接获取装置,还可以包括:
[0082] 第二类型确定模块,用于若在资源类型列表中没有查找到资源链接中的文件后缀,则根据资源请求对应的响应头部信息确定资源链接的链接类型。
[0083] 应理解的是,该装置与上述的资源链接获取方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当
省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或
固化在装置的操作系统(operating system,OS)中的软件功能模块。
[0084] 请参见图4示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备400,包括:处理器410和存储器420,存储器420存储有处理器410可执行
的机器可读指令,机器可读指令被处理器410执行时执行如上的方法。
[0085] 本申请实施例还提供了一种存储介质430,该存储介质430上存储有计算机程序,该计算机程序被处理器410运行时执行如上的方法。
[0086] 其中,存储介质430可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可
编程只读存储器(Electrically Erasable Programmable Read‑Only Memory,简称
EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称
EPROM),可编程只读存储器(Programmable Red‑Only Memory,简称PROM),只读存储器
(Read‑Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
[0087] 本申请实施例提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅是示意性的,例如,附图中的流程图和框图
显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系
架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代
码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可
执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以和附图
中所标注的发生顺序不同。例如,两个连续的方框实际上可以基本并行地执行,它们有时也
可以按相反的顺序执行,这主要根据所涉及的功能而定。也要注意的是,框图和/或流程图
中的每个方框、以及框图和/或流程图中的方框的组合,可以使用执行规定的功能或动作的
专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0088] 另外,在本申请实施例中的各个实施例的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的
部分。
[0089] 在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际
的关系或者顺序。
[0090] 以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易
想到变化或替换,都应涵盖在本申请实施例的保护范围之内。