专利转让平台_买专利_卖专利_中国高校专利技术交易-买卖发明专利上知查网

全部分类
全部分类
基于网络爬虫的域名缓存方法、装置、设备及存储介质

基于网络爬虫的域名缓存方法、装置、设备及存储介质

IPC分类号 : H04L29/12I,G06F16/955I

申请号
CN201910659750.2
可选规格
  • 专利类型: 发明专利
  • 法律状态: 有权
  • 申请日: 2019-07-23
  • 公开号: CN110365810B
  • 公开日: 2019-10-22
  • 主分类号: H04L29/12
  • 专利权人: 中南民族大学

专利摘要

本发明属于互联网技术领域,公开了一种基于网络爬虫的域名缓存方法、装置、设备及存储介质。该方法包括:在接收到域名解析请求时,确定与域名解析请求对应的待解析统一资源定位符URL链接;将待爬取URL队列中除待解析URL链接之外的其他URL链接作为预解析URL链接;对预解析URL链接进行预解析,得到预解析URL链接对应的域名数据;确定域名数据对应的缓存方式;将域名数据按照确定的缓存方式缓存到预先构建的缓存空间。本发明通过对域名缓存的方式来改善网络爬虫的性能,从而提升网络爬虫的解析速度,提升用户体验。

权利要求

1.一种基于网络爬虫的域名缓存方法,其特征在于,所述方法包括以下步骤:

在接收到域名解析请求时,确定与所述域名解析请求对应的待解析统一资源定位符URL链接;

将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为预解析URL链接;

对所述预解析URL链接进行预解析,得到所述预解析URL链接对应的域名数据;

确定所述域名数据对应的缓存方式;

将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间;

所述确定所述域名数据对应的缓存方式的步骤,包括:

提取所述域名数据中携带的解析标识;

在所述解析标识为成功标识时,获取所述域名数据对应的解析时长;

在所述解析时长小于预设阈值时,确定所述域名数据对应的缓存方式为正向缓存方式;

在所述解析时长大于预设阈值时,确定所述域名数据对应的缓存方式为反向缓存方式;

在所述解析标识为失败标识时,确定所述域名数据对应的缓存方式为反向缓存方式。

2.如权利要求1所述的方法,其特征在于,所述对所述预解析URL链接进行预解析的步骤,包括:

确定所述待爬取URL队列中所述预解析URL链接的个数N,所述N为大于等于1的整数;

根据所述个数N,确定需要创建并启动的域名预解析线程的个数M,所述M为大于等于1的整数;

基于多线程技术,创建并启动所述M个域名预解析线程,得到域名预解析线程池;

从所述待爬取URL队列中获取所述预解析URL链接,并将获取到的所述预解析URL链接随机分配给所述域名预解析线程池中处于空闲状态的域名预解析线程进行预解析。

3.如权利要求1所述的方法,其特征在于,所述缓存空间包括正向缓存区域和反向缓存区域;

所述将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间的步骤,包括:

在所述缓存方式为正向缓存方式时,将所述域名数据缓存到所述缓存空间的正向缓存区域;

在所述缓存方式为反向缓存方式时,将所述域名数据缓存到所述缓存空间的反向缓存区域。

4.如权利要求3所述的方法,其特征在于,所述正向缓存区域包括第一哈希表部分、二叉树部分和第二哈希表部分;

所述将所述域名数据缓存到所述缓存空间的正向缓存区域的步骤,包括:

对所述域名数据进行拆分,得到一级域名、二级域名、三级域名和互联网协议IP地址;

建立所述一级域名与所述二级域名之间的对应关系,得到第一映射关系表,并将所述一级域名和所述第一映射关系表缓存到所述第一哈希表部分;

根据所述第一映射关系表,将所述二级域名和所述三级域名按序缓存到所述二叉树部分的各个节点中;

建立所述二级域名与所述IP地址之间的对应关系,得到第二映射关系表,并将所述IP地址和所述第二映射关系表缓存到所述第二哈希表部分。

5.如权利要求3所述的方法,其特征在于,所述反向缓存区域包括第三哈希表部分和冲突域部分;

所述将所述域名数据缓存到所述缓存空间的反向缓存区域的步骤,包括:

获取所述域名数据中的域名、互联网协议IP地址,以及所述域名数据的解析时间、生存时间TTL和访问时间戳;

将所述解析时间、所述TTL和所述访问时间戳作为权值计算变量;

采用预设的权值更新算法,对所述权值计算变量进行计算,得到所述域名数据对应的权值;

建立所述域名、所述IP地址和所述权值之间的对应关系,得到第三映射关系表;

将所述域名缓存到所述第三哈希表部分,将所述IP、所述权值和所述第三映射关系表缓存到所述冲突域部分。

6.如权利要求1至5任一项所述的方法,其特征在于,所述将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间的步骤之后,所述方法还包括:

判断是否接收到新的域名解析请求;

在接收到新的域名解析请求,且当前解析完成时,从所述缓存空间获取预解析URL链接对应的域名数据。

7.一种基于网络爬虫的域名缓存装置,其特征在于,所述装置包括:

待解析URL链接确定模块,用于在接收到域名解析请求时,确定与所述域名解析请求对应的待解析统一资源定位符URL链接;

预解析URL链接确定模块,用于将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为预解析URL链接;

预解析模块,用于对所述预解析URL链接进行预解析,得到所述预解析URL链接对应的域名数据;

缓存方式确定模块,用于确定所述域名数据对应的缓存方式;

缓存模块,用于将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间;

所述缓存方式确定模块,还用于提取所述域名数据中携带的解析标识;在所述解析标识为成功标识时,获取所述域名数据对应的解析时长;在所述解析时长小于预设阈值时,确定所述域名数据对应的缓存方式为正向缓存方式;在所述解析时长大于预设阈值时,确定所述域名数据对应的缓存方式为反向缓存方式;在所述解析标识为失败标识时,确定所述域名数据对应的缓存方式为反向缓存方式。

8.一种基于网络爬虫的域名缓存设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于网络爬虫的域名缓存程序,所述基于网络爬虫的域名缓存程序配置为实现如权利要求1至6中任一项所述的基于网络爬虫的域名缓存方法的步骤。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于网络爬虫的域名缓存程序,所述基于网络爬虫的域名缓存程序被处理器执行时实现如权利要求1至6任一项所述的基于网络爬虫的域名缓存方法的步骤。

说明书

技术领域

本发明涉及互联网技术领域,尤其涉及一种基于网络爬虫的域名缓存方法、装置、设备及存储介质。

背景技术

网络爬虫是一个按照既定规则,功能很强地自动提取网页的程序,能够帮助人们快速在海量网页中检索有用信息。但随着互联网时代信息的剧增,网页信息也呈现爆炸式的增长,为了能够快速精准的获取到人们所需的信息,就需要不断提高网络爬虫的性能。

目前,为了提高网络爬虫的性能,通常会采取基于数据库的域名存储模型,或者基于生存时间值(Time To Live,TTL)的自适应域名系统(Domain Name System,DNS)缓存模型对域名进行缓存,进而提高网络性能。

虽然,基于数据库的域名存储模型方式可以对接多种接口和处理各种类型的DNS,但是这种存储结构降低了DNS服务器对请求响应的速度,不能够处理由外部DNS攻击导致的海量报文,因此会严重影响网络爬虫的性能。

而基于TTL的自适应DNS缓存模型方式虽然在缓存命中率和一致性之间取得了平衡,但DNS的应答报文和请求报文格式相同,无法很好的区分不同DNS,因此也会严重影响网络爬虫的性能。

因此,亟需提供一种基于网络爬虫的域名缓存方式,以提升网络爬虫的性能,从而提升网络爬虫的解析速度,提升用户体验。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本发明的主要目的在于提供一种基于网络爬虫的域名缓存方法、装置、设备及存储介质,旨在通过对域名缓存的方式来改善网络爬虫的性能,从而提升网络爬虫的解析速度,提升用户体验。

为实现上述目的,本发明提供了一种基于网络爬虫的域名缓存方法,所述方法包括以下步骤:

在接收到域名解析请求时,确定与所述域名解析请求对应的待解析统一资源定位符URL链接;

将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为预解析URL链接;

对所述预解析URL链接进行预解析,得到所述预解析URL链接对应的域名数据;

确定所述域名数据对应的缓存方式;

将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间。

优选地,所述对所述预解析URL链接进行预解析的步骤,包括:

确定所述待爬取URL队列中所述预解析URL链接的个数N,所述N为大于等于1的整数;

根据所述个数N,确定需要创建并启动的域名预解析线程的个数M,所述M为大于等于1的整数;

基于多线程技术,创建并启动所述M个域名预解析线程,得到域名预解析线程池;

从所述待爬取URL队列中获取所述预解析URL链接,并将获取到的所述预解析URL链接随机分配给所述域名预解析线程池中处于空闲状态的域名预解析线程进行预解析。

优选地,所述确定所述域名数据对应的缓存方式的步骤,包括:

提取所述域名数据中携带的解析标识;

在所述解析标识为成功标识时,获取所述域名数据对应的解析时长;

在所述解析时长小于预设阈值时,确定所述域名数据对应的缓存方式为正向缓存方式;

在所述解析时长大于预设阈值时,确定所述域名数据对应的缓存方式为反向缓存方式;

在所述解析标识为失败标识时,确定所述域名数据对应的缓存方式为反向缓存方式。

优选地,所述缓存空间包括正向缓存区域和反向缓存区域;

所述将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间的步骤,包括:

在所述缓存方式为正向缓存方式时,将所述域名数据缓存到所述缓存空间的正向缓存区域;

在所述缓存方式为反向缓存方式时,将所述域名数据缓存到所述缓存空间的反向缓存区域。

优选地,所述正向缓存区域包括第一哈希表部分、二叉树部分和第二哈希表部分;

所述将所述域名数据缓存到所述缓存空间的正向缓存区域的步骤,包括:

对所述域名数据进行拆分,得到一级域名、二级域名、三级域名和互联网协议IP地址;

建立所述一级域名与所述二级域名之间的对应关系,得到第一映射关系表,并将所述一级域名和所述第一映射关系表缓存到所述第一哈希表部分;

根据所述第一映射关系表,将所述二级域名和所述三级域名按序缓存到所述二叉树部分的各个节点中;

建立所述二级域名与所述IP地址之间的对应关系,得到第二映射关系表,并将所述IP地址和所述第二映射关系表缓存到所述第二哈希表部分。

优选地,所述反向缓存区域包括第三哈希表部分和冲突域部分;

所述将所述域名数据缓存到所述缓存空间的反向缓存区域的步骤,包括:

获取所述域名数据中的域名、互联网协议IP地址,以及所述域名数据的解析时间、生存时间TTL和访问时间戳;

将所述解析时间、所述TTL和所述访问时间戳作为权值计算变量;

采用预设的权值更新算法,对所述权值计算变量进行计算,得到所述域名数据对应的权值;

建立所述域名、所述IP地址和所述权值之间的对应关系,得到第三映射关系表;

将所述域名缓存到所述第三哈希表部分,将所述IP、所述权值和所述第三映射关系表缓存到所述冲突域部分。

优选地,所述将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间的步骤之后,所述方法还包括:

判断是否接收到新的域名解析请求;

在接收到新的域名解析请求,且当前解析完成时,从所述缓存空间获取预解析URL链接对应的域名数据。

此外,为实现上述目的,本发明还提出一种基于网络爬虫的域名缓存装置,所述装置包括:

待解析URL链接确定模块,用于在接收到域名解析请求时,确定与所述域名解析请求对应的待解析统一资源定位符URL链接;

预解析URL链接确定模块,用于将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为预解析URL链接;

预解析模块,用于对所述预解析URL链接进行预解析,得到所述预解析URL链接对应的域名数据;

缓存方式确定模块,用于确定所述域名数据对应的缓存方式;

缓存模块,用于将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间。

此外,为实现上述目的,本发明还提出一种基于网络爬虫的域名缓存设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于网络爬虫的域名缓存程序,所述基于网络爬虫的域名缓存程序配置为实现如上文所述的基于网络爬虫的域名缓存方法的步骤。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有基于网络爬虫的域名缓存程序,所述基于网络爬虫的域名缓存程序被处理器执行时实现如上文所述的基于网络爬虫的域名缓存方法的步骤。

本发明提供的基于网络爬虫的域名缓存方案,在网络爬虫根据接收到的域名解析请求对确定的待解析URL链接进行解析的时候,通过从待爬取URL队列中筛选出预解析URL链接,在对待解析URL链接进行解析的同时,对预解析URL链接进行预解析,进而得到预解析URL链接对应的域名数据,最终确定域名数据对应的缓存方式,并按照确定的缓存方式将域名数据缓存到预先构建的缓存空间,通过这种方式使得网络爬虫在后续解析过程中,可以直接从缓存空间中获取域名数据进行后续解析,无需花费额外的时间将待解析URL链接先解析为域名数据,再根据域名数据进行解析,从而大大提升了网络爬虫的解析速度,改善了网络爬虫的性能。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的基于网络爬虫的域名缓存设备的结构示意图;

图2为本发明基于网络爬虫的域名缓存方法第一实施例的流程示意图;

图3为本发明基于网络爬虫的域名缓存方法第二实施例的流程示意图;

图4为本发明基于网络爬虫的域名缓存装置第一实施例的结构框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的基于网络爬虫的域名缓存设备结构示意图。

如图1所示,该基于网络爬虫的域名缓存设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的结构并不构成对基于网络爬虫的域名缓存设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于网络爬虫的域名缓存程序。

在图1所示的基于网络爬虫的域名缓存设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明基于网络爬虫的域名缓存设备中的处理器1001、存储器1005可以设置在基于网络爬虫的域名缓存设备中,所述基于网络爬虫的域名缓存设备通过处理器1001调用存储器1005中存储的基于网络爬虫的域名缓存程序,并执行本发明实施例提供的基于网络爬虫的域名缓存方法。

本发明实施例提供了一种基于网络爬虫的域名缓存方法,参照图2,图2为本发明一种基于网络爬虫的域名缓存方法第一实施例的流程示意图。

本实施例中,所述基于网络爬虫的域名缓存方法包括以下步骤:

步骤S10,在接收到域名解析请求时,确定与所述域名解析请求对应的待解析统一资源定位符URL链接。

具体的说,本实施例的执行主体为任意部署或安装有网络爬虫系统的终端设备。

值得一提的是,为了尽可能提高对待解析URL的解析速度,本实施例中所说的网络爬虫系统优选分布式网络爬虫系统。

此外,应当理解的是,在实际应用中所述终端设备可以是客户端设备,也可以是服务器端设备,此处不做限制。

为了便于说明,本实施例主要以茶产品为例进行研究说明。即在本实施例中,上述所说的统一资源定位符(Uniform Resource Locator,URL)实质就是访问展示有相关茶产品信息的网络商城、网页等网络界面所需的网络地址。

此外,由于在实际应用中,每一个URL链接中都携带有要访问的网络界面的域名信息,或者标识该域名的固定标识信息。因而,为了能够根据接收到的域名解析请求快速确定纠结是要对哪一个待解析URL链接进行解析,所述域名解析请求中也会携带有相应的域名信息或者标识该域名信息的固定标识。

应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在实际应用中,本领域的技术人员可以根据需要进行设置,此处不做限制。

步骤S20,将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为预解析URL链接。

具体的说,由于本案所说的对域名缓存方案主要是针对网络爬虫在工作状态,特别是根据接收到的域名解析请求,对与当前域名解析请求对应的待解析URL链接进行解析的过程中,对当前时刻待爬取URL队列中未被解析的URL链接进行的预解析,以及对预解析后,URL链接对应的域名数据的缓存,因而在确定当前域名解析请求对应的待解析URL链接之后,需要将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为接下来需要进行预解析操作的预解析URL链接。

通过上述描述可以发现,在本实施例中从待爬取URL队列中筛选预解析URL链接时,具体是将除所述待解析URL链接之外的其他URL链接均作为预解析URL链接。但在实际应用中,本领域的技术人员也可以根据实际情况进行设置,比如优先将与确定的待解析URL链接存在关联性的URL链接作为预解析URL链接。

具体的,上述所说的关联性可以是预解析URL链接是当前确定的待解析URL链接对应的页面中包含的URL链接。

应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在实际应用中,本领域的技术人员可以根据需要进行设置,此处不做限制。

步骤S30,对所述预解析URL链接进行预解析,得到所述预解析URL链接对应的域名数据。

需要说明的是,由于在实际应用中,目前对URL链接进行预解析的过程中,其工作方式是单一的,即在接收到一次域名解析请求,并根据域名解析请求对相应的待解析URL链接进行解析的过程中,某个时间点只允许一个线程对预解析URL链接进行预解析操作,即预解析操作是单线程的,这样不仅预解析效率低,并且会造成阻塞现象。

因此,为了解决这一问题,本实施例在对所述预解析URL链接进行预解析的过程中,具体是采用多线程的方式,关于线程个数的确定以及预解析过程,大致如下:

(1)确定所述待爬取URL队列中所述预解析URL链接的个数N。

关于确定所述待爬取URL队列中所述预解析URL链接个数的方式,可以是通过对所述待爬取URL队列进行遍历,并采用计数器进行记录。

相应地,确定的个数N即为对所述待爬取URL队列遍历完后,所述计数器当前显示的数值。

此外,值得一提的是,由于本实施例提供的基于网络爬虫的域名缓存方案主要是针对待爬取URL队列中存在多个待解析URL链接的,即待爬取URL队列中至少存在2个待解析URL链接。

因此,在本实施例中,确定的预解析URL链接的个数N为大于等于1的整数。

(2)根据所述个数N,确定需要创建并启动的域名预解析线程的个数M。

具体的说,为了尽可能的提高预解析速度,降低阻塞现象的发生,域名预解析线程的个数可以与预解析URL链接的个数相同,也可以略小于预解析URL链接的个数。

也就是说,在实际应用中,N和M的取值可以相同,也可以不同,此处不做限制。

故,本实施例中确定的需要创建并启动的域名预解析线程的个数M也为大于等于1的整数。

(3)基于多线程技术,创建并启动所述M个域名预解析线程,得到域名预解析线程池。

具体的说,在实际应用中,创建并启动所述M个域名预解析线程,得到域名预解析线程池的方式,具体可以是由本领域的技术人员基于多线程技术,预先编译好能够进行线程创建和启动的程序。

相应地,在确定需要创建并启动的域名解析线程的个数M之后,通过将M赋值给该程序,进而由该程序自动创建并启动所述M个域名预解析线程,得到域名预解析线程池。

进一步地,在实际应用中,也可以预先创建构建一个域名解析线程池,并在该域名解析线程池中创建多个域名解析线程,并设置域名解析线程先处于待启动状态,从而方便后续直接从该域名解析线程池中获取域名解析线程进行预解析。

(4)从所述待爬取URL队列中获取所述预解析URL链接,并将获取到的所述预解析URL链接随机分配给所述域名预解析线程池中处于空闲状态的域名预解析线程进行预解析。

应当理解的是,以上给出的仅为一种具体的实现方式,对本发明的技术方案并不构成任何限定,在实际应用中,本领域的技术人员可以根据需要进行设置,此处不做限制。

步骤S40,确定所述域名数据对应的缓存方式。

具体的说,为了便于对域名数据的管理,本实施例中的缓存空间主要分为正向缓存区域和反向缓存区域。因而,缓存方式也需要分为两种,即正向缓存方式和方向缓存方式。

为了便于确定所述域名数据对应的缓存方式,本实施例给出一种具体的确定方式,具体为通过提取所述域名数据中携带的解析标识,进而根据解析标识来确定所述域名数据对应的缓存方式。

比如说,在所述解析标识为成功标识时,直接确定所述域名数据对应的缓存方式为正向缓存方式;在所述解析标识为失败标识时,直接确定所述域名数据对应的缓存方式为反向缓存方式。

进一步地,由于在实际应用中,可能存在较为复杂、解析难度较大的URL链接,虽然这类链接可能会被解析成功,即写的解析标识为成功标识,但实质在后续解析过程中需要花费大量时间,需要提醒网络爬虫主要。

故,为了便于网络爬虫识别,也可以将此类URL链接对应的域名数据的缓存方式确定为反向缓存方式。

具体的说,在实现过程中,可以通过解析时长这一参数来作为判断标准。

也就是说,在所述解析标识为成功标识时,需要先获取所述域名数据对应的解析时长,然后根据解析时长来确定所述域名数据纠结需要选用正向缓存方式,还是反向缓存方式。

具体的,可以预先设置一个预设阈值,从而在所述解析时长小于预设阈值时,确定所述域名数据对应的缓存方式为正向缓存方式;在所述解析时长大于预设阈值时,确定所述域名数据对应的缓存方式为反向缓存方式。

应当理解的是,以上给出的仅为一种具体的实现方式,对本发明的技术方案并不构成任何限定,在实际应用中,本领域的技术人员可以根据需要进行设置,此处不做限制。

此外,需要说明的是,在具体实现中,所述解析标识可以是由本领域的技术人员根据需要设置的,比如用“1”或者“success”作为成功标识,用“0”或“fail”作为失败标识。

步骤S50,将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间。

具体的说,由于缓存方式可以分为正向缓存方式和反向缓存方式。因而,在将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间时,实质是将所述域名数据按照正向缓存方式缓存到所述缓存空间的正向缓存区域,或者将所述域名数据按照反向缓存方式缓存到所述缓存空间的反向缓存区域。

此外,值得一提的是,在本实施例中,所述正向缓存区域主要包括第一哈希表部分、二叉树部分和第二哈希表部分;所述反向缓存区域主要包括第三哈希表部分和冲突域部分。

此外,需要说明的是,在实际应用中通过对URL链接进行预解析的域名数据,主要包括域名、互联网协议地址(Internet Protocol Address,IP地址),以及所述域名数据的解析时间、生存时间(time-to-live,TTL)和访问时间戳等。

而域名又可以分为三级,即一级域名(也称为:顶级域名)、二级域名和三级域名。

其中,一级域名具体是由中间有一个点作为分割符的字符串组成,比如baidu.com。

二级域名实质就是一个一级域名以下的主机名,具体是由两个点作为分隔符的字符串组成,比如pan.baidu.com。其中,“pan”就是主机名。

三级域名则是二级域名的子域名,其特征是表示三级域名的字符串中包含了三个点作为分隔符。

相应地,所述将所述域名数据按照正向缓存方式缓存到所述缓存空间的正向缓存区域的操作,大致如下:

(1)对所述域名数据进行拆分,得到一级域名、二级域名、三级域名和互联网协议IP地址。

具体的说,在从所述域名数据中提取一级域名、二级域名和三级域名时,可以是先从所述域名数据中拆分出一个完整的域名,然后再从该域名中提取出一级域名、二级域名和三级域名。

(2)建立所述一级域名与所述二级域名之间的对应关系,得到第一映射关系表,并将所述一级域名和所述第一映射关系表缓存到所述第一哈希表部分。

具体的说,由于一级域名相对于完整的域名,或者二级域名,三级域来说,数量一般较少,并且长度较短。因而本实施例通过由一级哈希表部分来管理(比如添加、查询、删除等操作)一级域名和第一映射关系表,可以有效的避免因直接对域名字符串进行哈希存储导致的各种冲突。

(3)根据所述第一映射关系表,将所述二级域名和所述三级域名按序缓存到所述二叉树部分的各个节点中。

具体的说,在根据所述第一映射关系表,将所述二级域名和所述三级域名按序缓存到所述二叉树部分的各个节点中的过程中,实质是以所述第一映射关系表中的一级域名作为索引,然后将所述一级域名下的主机名,即二级域名先添加到二叉树部分第一层的某个节点中,然后将该二级域名的子域名,即三级域名添加到该二级域名左侧支链的节点上,如果还存在并列的三级域名则添加到该二级域名右侧支链的节点上。

(4)建立所述二级域名与所述IP地址之间的对应关系,得到第二映射关系表,并将所述IP地址和所述第二映射关系表缓存到所述第二哈希表部分。

具体的说,由于二级域名的特征是字符串中含有两个“.”,为便于理解以下给出一种具体的二级域名与所述IP地址之间的对应关系的表示形式。

比如说,针对“www.baidu.com”的二级域名与其对应的IP地址之间对应关系的表示可以是:“www.baidu.com”:IP。

应当理解的是,在实际应用中,上述“IP”需要替换为二级域名对应的实际IP地址。

此外,值得一提的是,实际应用中,在缓存三级域名时,可以同时将所述三级域名最近被访问的时间戳缓存到二叉树部分的节点上,以便在三级域名的节点数量超过阈值时,根据每一个三级域名对应的时间戳按照最近访问时间和最晚访问时间进行降序排列,进而获取访问时间的中间值,并将该中间值作为丢弃三级域名的临界值,从而实现缓存空间的最大化利用。

此外,所述将所述域名数据按照反向缓存方式缓存到所述缓存空间的反向缓存区域的操作,大致如下:

(1)获取所述域名数据中的域名、互联网协议IP地址,以及所述域名数据的解析时间、生存时间TTL和访问时间戳。

具体的说,由于需要缓存到反向缓存区域的域名数据可能是未成功解析的URL链接对应的域名数据,也可能是解析成功,但解析过程耗费时间较长的URL链接对应的域名数据。因而,为了识别出解析成功,但解析过程耗费时间较长的URL链接对应的域名数据,需要从所述域名数据中获取上述几种参数。

此外,上述所说的TTL是Internet协议(IP)包中的一个值,它主要用于告知路由器该包是否在网络中时间过长而应该被丢弃,故可以用来作为判断解析过程是否耗费时间较长的依据。

此外,上述所说的访问时间戳,具体为所述域名数据中的域名或IP地址最近访问时间对应的时间戳。

(2)将所述解析时间、所述TTL和所述访问时间戳作为权值计算变量。

(3)采用预设的权值更新算法,对所述权值计算变量进行计算,得到所述域名数据对应的权值。

具体的说,关于权值更新算法的选择,本领域的技术人员可以根据需要进行选取,此处不做限制。

相应地,根据选取的权值更新算法,对所述权值计算变量进行计算,得到所述域名数据对应的权值的操作,本领域的技术人员可以自行查阅选取的权值更新算法的使用资料进行实现,此处不再赘述。

(4)建立所述域名、所述IP地址和所述权值之间的对应关系,得到第三映射关系表。

(5)将所述域名缓存到所述第三哈希表部分,将所述IP、所述权值和所述第三映射关系表缓存到所述冲突域部分。

通过这种缓存方式,网络爬虫在后续从反向缓存区域获取域名数据时,只需先利用哈希函数找到第三哈希表部分中相应域名的存储位置,然后再以线性指针在冲突域部分中根据所述第三映射关系表搜索所述域名对应的IP地址和权值即可直接找到命中结果,从而快速准确的返回所述域名对应的IP地址。

此外,值得一提的是,在本实施例中,之所以引入权值,是为了以权值为标准对冲突域部分中缓存的数据进行降序排序,从而将预设周期内权值低,且长时间得不到更新的数据从冲突域部分中删除,进而实现冲突域部门的最大化利用,以及提高查询效率。

应当理解的是,以上给出的仅为一种将得到的域名数据按照确定的缓存方式缓存到预先构建的缓存空间中的具体实现方式,在实际应用中,本领域的技术人员可以在此基础进行适应性修改,但修改后得到的技术方案仍属于本发明所要保护的技术范围。

通过上述描述不难发现,本实施例提供的基于网络爬虫的域名缓存方法,在网络爬虫根据接收到的域名解析请求对确定的待解析URL链接进行解析的时候,通过从待爬取URL队列中筛选出预解析URL链接,在对待解析URL链接进行解析的同时,对预解析URL链接进行预解析,进而得到预解析URL链接对应的域名数据,最终确定域名数据对应的缓存方式,并按照确定的缓存方式将域名数据缓存到预先构建的缓存空间,通过这种预解析的方式,实现了解析时间的最大化利用,从而大大提升了网络爬虫整体的解析速度。

此外,在对预解析URL链接进行预解析时,通过采用多线程方式对多个预解析URL进行预解析,实现了异步非阻塞的效果,从而避免了现有解析方式只能在对待解析URL链接解析完成之后,才处理其他待解析URL链接容易导致阻塞的问题。

参考图3,图3为本发明一种基于网络爬虫的域名缓存方法第二实施例的流程示意图。

基于上述第一实施例,本实施例基于网络爬虫的域名缓存方法在所述步骤S50之后,还包括:

步骤S60,判断是否接收到新的域名解析请求。

具体的说,若通过判断,确定接收到了新的域名解析请求,并且当前解析完成,则执行步骤S70;若通过判断,确定没有接收到新的域名请求,则继续进行检测判断。

此外,应当理解的是,在实际应用中,还会存在接收到了新的域名解析请求,但是当前解析操作并未完成的情况。为了解决这一问题,在具体实现中,可以预先构建一个解析请求队列。

相应地,在接收到新的域名解析请求,但当前解析未完成时,可以先将新的域名解析请求按序添加到解析请求队列中进行排队,以便网络爬虫在完成当前解析操作后,可以直接从解析请求队列读取解析请求,并根据解析请求从正向或反向缓存区域读取已经完成预解析的URL链接对应的域名数据进行解析。

步骤S70,在接收到新的域名解析请求,且当前解析完成时,从所述缓存空间获取预解析URL链接对应的域名数据。

此外,值得一提的是,在实际应用中,还会存在缓存空间中并未缓存有与玉米解析请求对应的URL链接的域名数据,即在接收到新的域名解析请求时,只对待爬取URL队列中的部分URL链接完成了预解析操作。

这种情况下,可以直接从待爬取URL队列中查找与新接收到的域名解析请求对应的待解析URL链接,然后将查找到的URL链接发送到域名解析服务器进行域名数据的解析。

或者,可以将该域名解析请求与位于其后的域名解析请求进行位置调换,先根据位于其后的域名解析请求从缓存空间中获取对应的预解析URL链接对应的域名数据。如果缓存空间中也不存在调换位置后的域名解析请求对应的域名数据,则继续按照上述操作进行调换和查找。如果遍历完整个解析请求队列都没有从缓存空间中查找到任何一个域名解析请求对应的域名数据,则按照第一方式,从待爬取URL队列中查找每一个域名解析请求对应的待解析URL链接,然后将查找到的URL链接发送到域名解析服务器进行域名数据的解析。

应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。

通过上述描述不难发现,本实施例提供的基于网络爬虫的域名缓存方法,在对预解析URL链接进行预解析,并将预解析URL链接对应的域名数据缓存到预先构建的缓存空间之后,通过判断是否接收到新的域名解析请求,并在确定接收到新的域名解析请求,且当前解析完成时,直接从缓存空间中获取域名数据进行后续解析,无需花费额外的时间将待解析URL链接先解析为域名数据,再根据域名数据进行解析,从而大大提升了网络爬虫的解析速度,改善了网络爬虫的性能。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有基于网络爬虫的域名缓存程序,所述基于网络爬虫的域名缓存程序被处理器执行时实现如上文所述的基于网络爬虫的域名缓存方法的步骤。

参照图4,图4为本发明基于网络爬虫的域名缓存装置第一实施例的结构框图。

如图4所示,本发明实施例提出的基于网络爬虫的域名缓存装置包括:待解析URL链接确定模块4001、预解析URL链接确定模块4002、预解析模块4003、缓存方式确定模块4004和缓存模块4005。

其中,待解析URL链接确定模块4001,用于在接收到域名解析请求时,确定与所述域名解析请求对应的待解析统一资源定位符URL链接;预解析URL链接确定模块4002,用于将待爬取URL队列中除所述待解析URL链接之外的其他URL链接作为预解析URL链接;预解析模块4003,用于对所述预解析URL链接进行预解析,得到所述预解析URL链接对应的域名数据;缓存方式确定模块4004,用于确定所述域名数据对应的缓存方式;缓存模块4005,用于将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间。

应当理解的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

此外,为了便于理解本实施例中提供的基于网络爬虫的域名缓存装置在实际应用中各个功能模块的具体处理流程,以下针对预解析模块4003、缓存方式确定模块4004和缓存模块4005的处理进行具体说明。

具体的,所述预解析模块4003执行的对所述预解析URL链接进行预解析的操作,在具体应用中实现流程大致如下:

首先,确定所述待爬取URL队列中所述预解析URL链接的个数N;

然后,根据所述个数N,确定需要创建并启动的域名预解析线程的个数M;

接着,基于多线程技术,创建并启动所述M个域名预解析线程,得到域名预解析线程池;

最后,从所述待爬取URL队列中获取所述预解析URL链接,并将获取到的所述预解析URL链接随机分配给所述域名预解析线程池中处于空闲状态的域名预解析线程进行预解析。

应当理解的是,以上给出的仅为一种具体的预解析方式,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。

此外,值得一提的是,在本实施例中,上述所说的N和M均为大于等于1的整数。

并且,在实际应用中,N和M的取值可以相同,也可以不同,此处不做限制。

此外,所述缓存方式确定模块4004执行的确定所述域名数据对应的缓存方式的操作,在具体应用中实现流程大致如下:

首先,提取所述域名数据中携带的解析标识;

相应地,在所述解析标识为失败标识时,确定所述域名数据对应的缓存方式为反向缓存方式。

反之,在所述解析标识为成功标识时,接着获取所述域名数据对应的解析时长;

最终,在所述解析时长小于预设阈值时,确定所述域名数据对应的缓存方式为正向缓存方式;在所述解析时长大于预设阈值时,确定所述域名数据对应的缓存方式为反向缓存方式。

应当理解的是,以上给出的仅为一种确定缓存方式的具体实现方式,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。

进一步地,由于在对预解析的URL链接进行预解析时,可能存在上述两种情况,即顺利的解析成功和未解析成功(本实施例中将解析时长超过预设阈值的也归为未解析成功),因而为了便于管理者两种类型的URL链接对应的域名数据,本实施例中的缓存空间主要分为正向缓存区域和反向缓存区域。

相应地,所述缓存模块4005执行的将所述域名数据按照确定的缓存方式缓存到预先构建的缓存空间的操作,在具体应用中实现流程大致如下:

在所述缓存方式为正向缓存方式时,将所述域名数据缓存到所述缓存空间的正向缓存区域;

在所述缓存方式为反向缓存方式时,将所述域名数据缓存到所述缓存空间的反向缓存区域。

此外,值得一提的是,在本实施例中,所述正向缓存区域主要包括第一哈希表部分、二叉树部分和第二哈希表部分;所述反向缓存区域主要包括第三哈希表部分和冲突域部分。

相应地,在将所述域名数据缓存到所述缓存空间的正向缓存区域的过程中,具体流程大致如下:

首先,对所述域名数据进行拆分,得到一级域名、二级域名、三级域名和互联网协议IP地址;

然后,建立所述一级域名与所述二级域名之间的对应关系,得到第一映射关系表,并将所述一级域名和所述第一映射关系表缓存到所述第一哈希表部分;

接着,根据所述第一映射关系表,将所述二级域名和所述三级域名按序缓存到所述二叉树部分的各个节点中;

最后,建立所述二级域名与所述IP地址之间的对应关系,得到第二映射关系表,并将所述IP地址和所述第二映射关系表缓存到所述第二哈希表部分。

此外,在将所述域名数据缓存到所述缓存空间的反向缓存区域的过程中,具体流程大致如下:

首先,获取所述域名数据中的域名、互联网协议IP地址,以及所述域名数据的解析时间、生存时间TTL和访问时间戳;

然后,将所述解析时间、所述TTL和所述访问时间戳作为权值计算变量;

接着,采用预设的权值更新算法,对所述权值计算变量进行计算,得到所述域名数据对应的权值;

接着,建立所述域名、所述IP地址和所述权值之间的对应关系,得到第三映射关系表;

最后,将所述域名缓存到所述第三哈希表部分,将所述IP、所述权值和所述第三映射关系表缓存到所述冲突域部分。

应当理解的是,以上给出的仅为一种将域名数据缓存到缓存空间的具体实现方式,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。

通过上述描述不难发现,本实施例提供的基于网络爬虫的域名缓存装置,在网络爬虫根据接收到的域名解析请求对确定的待解析URL链接进行解析的时候,通过从待爬取URL队列中筛选出预解析URL链接,在对待解析URL链接进行解析的同时,对预解析URL链接进行预解析,进而得到预解析URL链接对应的域名数据,最终确定域名数据对应的缓存方式,并按照确定的缓存方式将域名数据缓存到预先构建的缓存空间,通过这种预解析的方式,实现了解析时间的最大化利用,从而大大提升了网络爬虫整体的解析速度。

此外,在对预解析URL链接进行预解析时,通过采用多线程方式对多个预解析URL进行预解析,实现了异步非阻塞的效果,从而避免了现有解析方式只能在对待解析URL链接解析完成之后,才处理其他待解析URL链接容易导致阻塞的问题。

需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。

另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的基于网络爬虫的域名缓存方法,此处不再赘述。

基于上述基于网络爬虫的域名缓存装置的第一实施例,提出本发明基于网络爬虫的域名缓存装置第二实施例。

在本实施例中,所述基于网络爬虫的域名缓存装置还包括判断模块和获取模块。

其中,所述判断模块,用于判断是否接收到新的域名解析请求。

所述获取模块,用于在接收到新的域名解析请求,且当前解析完成时,从所述缓存空间获取预解析URL链接对应的域名数据。

应当理解的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

进一步地,在实际应用中,若在接收到新的域名解析请求,但当前解析未完成时,可以先将新的域名解析请求按序添加到解析请求队列中进行排队,以便网络爬虫在完成当前解析操作后,可以直接从解析请求队列读取解析请求,并根据解析请求从正向或反向缓存区域读取待解析URL链接对应的域名数据进行解析。

通过上述描述不难发现,本实施例提供的基于网络爬虫的域名缓存方法,在对预解析URL链接进行预解析,并将预解析URL链接对应的域名数据缓存到预先构建的缓存空间之后,通过判断是否接收到新的域名解析请求,并在确定接收到新的域名解析请求,且当前解析完成时,直接从缓存空间中获取域名数据进行后续解析,无需花费额外的时间将待解析URL链接先解析为域名数据,再根据域名数据进行解析,从而大大提升了网络爬虫的解析速度,改善了网络爬虫的性能。

需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。

另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的基于网络爬虫的域名缓存方法,此处不再赘述。

此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

基于网络爬虫的域名缓存方法、装置、设备及存储介质专利购买费用说明

专利买卖交易资料

Q:办理专利转让的流程及所需资料

A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。

1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。

2:按规定缴纳著录项目变更手续费。

3:同时提交相关证明文件原件。

4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。

Q:专利著录项目变更费用如何缴交

A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式

Q:专利转让变更,多久能出结果

A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。

动态评分

0.0

没有评分数据
没有评价数据
×

打开微信,点击底部的“发现”

使用“扫一扫”即可将网页分享至朋友圈

×
复制
用户中心
我的足迹
我的收藏

您的购物车还是空的,您可以

  • 微信公众号

    微信公众号
在线留言
返回顶部