掌桥专利:专业的专利平台
掌桥专利
首页

网页内容获取方法、装置和电子设备

文献发布时间:2023-06-19 19:35:22


网页内容获取方法、装置和电子设备

技术领域

本发明涉及互联网技术领域,尤其涉及一种网页内容获取方法、装置和电子设备。

背景技术

通用搜索引擎的处理对象是互联网网页,目前互联网网页的数量已达百亿,所以搜索引擎首先面临的问题是:如何能够设计出高效的下载系统,将如此的海量的网页数据传送到本地,在本地形成互联网网页的镜像备份。

网络爬虫能够起到这样的作用,完成此艰巨任务。网络爬虫是搜索引擎中很关键也很基础的构件,尽管爬虫经过几十年的发展,从整体框架上来看已经相对成熟,但随着互联网的不断发展,也面临着一些新的挑战。网络爬虫爬取数据是一个典型的多任务处理场景,请求页面时会有较长的延迟,总体来说更多的是等待,这使得网络爬虫爬取速度慢,效率低下。

发明内容

本发明提供一种网页内容获取方法、装置和电子设备,用以解决现有技术中网络爬取速度慢、效率低的问题,实现多线程的方式进行网页数据的获取,爬取速度快效率高,并且将爬取失败的目标URL重新加入到待爬取队列中,提高了网页数据爬取的稳定性。

本发明提供一种网页内容获取方法,包括:

判断各子线程对应的各待爬取队列是否为空;

当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页;

获取爬取所述目标URL后的响应信息;

当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据;

存储所述目标网页数据。

根据本发明提供的一种网页内容获取方法,还包括:

当所述响应信息为响应失败信息时,确定所述目标URL对应的网页获取失败,并将所述目标URL重新放入所述待爬取列队中。

根据本发明提供的一种网页内容获取方法,还包括:

当所述待爬取队列为空时,结束对应的所述子线程。

根据本发明提供的一种网页内容获取方法,所述判断各子线程对应的各待爬取队列是否为空之前,还包括:

获取多个种子URL,根据预设规则将多个所述种子URL分别放入各子线程的待爬取队列中。

根据本发明提供的一种网页内容获取方法,所述预设规则包括预设优先级;

所述获取多个种子URL,根据预设规则将多个所述种子URL分别放入各子线程的待爬取队列中,包括:

获取多个种子URL,根据所述种子URL所属子线程对多个所述种子URL进行分组;

将多组所述种子URL分别按照预设优先级进行排序;

将排序后的多组所述种子URL分别放入所属的所述子线程对应的待爬取队列中。

根据本发明提供的一种网页内容获取方法,在java语言中,所述待爬取队列为LinkedList或List。

本发明还提供一种网页内容获取装置,该装置包括:

判断模块,用于判断各子线程对应的各待爬取队列是否为空;

运行模块,用于当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页;

获取模块,用于获取爬取所述目标URL后的响应信息;

解析模块,用于当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据;

存储模块,用于存储所述目标网页数据。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述网页内容获取方法。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述网页内容获取方法。

本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述网页内容获取方法。

本发明提供的网页内容获取方法、装置和电子设备,一方面,通过各子线程来获取网页数据,以多线程的方式提高了爬取速度和效率,进一步的提升了网页解析和网页数据下载能力;另一方面,将爬取失败的目标URL重新加入到待爬取队列中,提高了网页数据爬取的稳定性。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的网页内容获取方法的流程示意图之一;

图2是本发明提供的网页内容获取方法的流程示意图之二;

图3是本发明提供的获取多个种子URL并放入各子线程的待爬取队列中的方法的流程示意图;

图4是本发明提供的网页内容获取装置的结构示意图;

图5是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1-图3描述本发明的一种网页内容获取方法,如图1中所示,该方法包括:

S101:判断各子线程对应的各待爬取队列是否为空。

S102:当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页。

S103:获取爬取所述目标URL后的响应信息。

S104:当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据。

S105:存储所述目标网页数据。

具体的,该方法可以应用于网络设备端,例如,可以由网络爬虫通过网络设备来执行。首先,该方法需要判断各子线程对应的各待爬取队列是否是空的,如果是空的则不需要运行对应的爬取进程。如果待爬取队列不是空的,则运行该待爬取队列对应的爬取进程,在待爬取队列中爬取目标URL,以用于获得目标URL对应的网页。可以理解的是,可以将各子线程对应的各待爬取队列在数据库中进行存储,以便于异常情况下可以从数据库中调用各待爬取队列,从而使得在一些异常情况下,通过从数据库中调用待爬取队列的方式以执行上述网页获取方法。

进一步的,获取爬取所述目标URL后的响应信息,该响应信息可以通过对应的子线程的爬取进程获得,响应信息可以为状态码,用于判断是否进行下一步的网页解析以获取目标网页数据。当获取的该响应信息为响应成功信息时,表示通过该目标URL成功爬取到了对应的网页,此时执行页面解析操作,对网页进行解析,以根据用户需求获取网页上的目标网页数据。将获得的目标网页数据进行存储,以便于后续进一步对存储的目标网页数据进行统计或分析。

可以理解的是,对于多个子线程对应的待爬取列队中,不是空的的待爬取列队均会执行上述步骤操作,直到均获得目标网页数据并存储。

在此,URL(Uniform Resource Location,统一资源定位符)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出网页中的文件的位置以及浏览器应该怎么处理它,一般地,基本URL包含模式(或称协议)、服务器名称或互联网协议(internetprotocol,IP)地址(对应网站)、路径和文件名。

本发明提供的网页内容获取方法,一方面,通过各子线程来获取网页数据,以多线程的方式提高了爬取速度和效率,进一步的提升了网页解析和网页数据下载能力;另一方面,将爬取失败的目标URL重新加入到待爬取队列中,提高了网页数据爬取的稳定性。

在一个实施例中,如图2中所示,该方法还包括:

当所述响应信息为响应失败信息时,确定所述目标URL对应的网页获取失败,并将所述目标URL重新放入所述待爬取列队中。

具体的,在通过爬取目标URL获取所述目标URL对应的网页时,也可能会爬取失败,爬取失败后获得的响应信息则为响应失败信息。

在获得响应失败信息后,则需要重新进行网页爬取来获得该目标网页数据,此时,需要将目标URL重新放入待爬取列队中,以便于后期将该目标URL取出,并根据该目标URL重新进行网页爬取。

在一个实施例中,如图2中所示,该方法还包括:

当所述待爬取队列为空时,结束对应的所述子线程。

具体的,判断各子线程对应的各待爬取队列是否是空的,如果是空的则表示该子线程没有爬取任务,则不需要运行对应的爬取进程,直接结束当前子线程。

在一个实施例中,所述判断各子线程对应的各待爬取队列是否为空之前,还包括:

获取多个种子URL,根据预设规则将多个所述种子URL分别放入各子线程的待爬取队列中。

具体的,在判断各子线程对应的各待爬取队列是否是空的之前,首先需要获取多个种子URL,多个种子URL可以人为地指定的即可以由用户根据需要进行指定,也可以由用户根据需要指定的某个或某几个初始爬取网页来决定。

在一个实施例中,如图3中所示,所述预设规则包括预设优先级;

所述获取多个种子URL,根据预设规则将多个所述种子URL分别放入各子线程的待爬取队列中,包括:

S301:获取多个种子URL,根据所述种子URL所属子线程对多个所述种子URL进行分组;

S302:将多组所述种子URL分别按照预设优先级进行排序;

S303:将排序后的多组所述种子URL分别放入所属的所述子线程对应的待爬取队列中。

具体的,获取多个种子URL,根据需要将多个所述种子URL分别放入各子线程的待爬取队列中具体包括:

首先,获取多个种子URL,获取后根据URL所属子线程对多个URL进行分组,即将属于同一个子线程的至少一个URL划分为一个组。

其次,分组后按照预设优先级对每组种子URL进行排序,可以根据优先级从高到低的顺序对同一组的多个URL进行排序,预设优先级指的可以是爬取优先级。例如,可以将优先级较高的URL排在前面,相应的,将优先级较低的URL排在后面。后续可以依据先进先出的原则,从所述网络爬虫队列中依次取出URL并进行对应的网页爬取,其中,优先级较高排在前面的URL,会优先被取出进行网页爬取,优先级较低排在后面的URL,会后续被取出进行网页爬取。此种URL排序方式可以对网络爬虫爬取网页起到指导作用。

最后,将排好序的URL放入所述子线程对应的待爬虫队列,待爬取队列即是一个或多个URL的集合。

在一个实施例中,在java语言中,所述待爬取队列为LinkedList或List。

具体的,在java语言中,所述待爬取队列可以为LinkedList或List。其中,Linkedlist(链表)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。List是Java中比较常用的集合类,List是一个接口,它是继承于Collection的接口,List代表着有序的队列。

下面对本发明提供的网页内容获取装置进行描述,下文描述的网页内容获取装置与上文描述的网页内容获取方法可相互对应参照。

如图4所示,该网页内容获取装置包括:

判断模块401,用于判断各子线程对应的各待爬取队列是否为空;

运行模块402,用于当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页;

获取模块403,用于获取爬取所述目标URL后的响应信息;

解析模块404,用于当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据;

存储模块405,用于存储所述目标网页数据。

在一个实施例中,该网页内容获取装置还包括:

重置模块,用于当所述响应信息为响应失败信息时,确定所述目标URL对应的网页获取失败,并将所述目标URL重新放入所述待爬取列队中。

在一个实施例中,该网页内容获取装置还包括:

结束模块,用于当所述待爬取队列为空时,结束对应的所述子线程。

在一个实施例中,该网页内容获取装置还包括:

URL获取模块,用于获取多个种子URL,根据预设规则将多个所述种子URL分别放入各子线程的待爬取队列中。

在一个实施例中,所述预设规则包括预设优先级,所述URL获取模块具体用于:

获取多个种子URL,根据所述种子URL所属子线程对多个所述种子URL进行分组;

将多组所述种子URL分别按照预设优先级进行排序;

将排序后的多组所述种子URL分别放入所属的所述子线程对应的待爬取队列中。

在一个实施例中,在java语言中,所述待爬取队列为LinkedList或List。

本发明提供的网页内容获取装置,一方面,通过各子线程来获取网页数据,以多线程的方式提高了爬取速度和效率,进一步的提升了网页解析和网页数据下载能力;另一方面,将爬取失败的目标URL重新加入到待爬取队列中,提高了网页数据爬取的稳定性。

图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行网页内容获取方法,该方法包括:判断各子线程对应的各待爬取队列是否为空;当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页;获取爬取所述目标URL后的响应信息;当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据;存储所述目标网页数据。

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

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的网页内容获取方法,该方法包括:判断各子线程对应的各待爬取队列是否为空;当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页;获取爬取所述目标URL后的响应信息;当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据;存储所述目标网页数据。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的网页内容获取方法,该方法包括:判断各子线程对应的各待爬取队列是否为空;当所述待爬取队列不为空时,运行爬取进程,在所述待爬取队列中爬取目标URL,以获取所述目标URL对应的网页;获取爬取所述目标URL后的响应信息;当所述响应信息为响应成功信息时,确定所述目标URL对应的网页获取成功,并执行页面解析操作,对所述网页进行解析以获取目标网页数据;存储所述目标网页数据。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

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

技术分类

06120115962952