CN106534244B - 一种代理资源的调度方法及装置 - Google Patents
一种代理资源的调度方法及装置 Download PDFInfo
- Publication number
- CN106534244B CN106534244B CN201510583823.6A CN201510583823A CN106534244B CN 106534244 B CN106534244 B CN 106534244B CN 201510583823 A CN201510583823 A CN 201510583823A CN 106534244 B CN106534244 B CN 106534244B
- Authority
- CN
- China
- Prior art keywords
- proxy
- http
- linked list
- resource linked
- node 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Abstract
本发明公开了一种代理资源的调度方法,包括:接收爬虫系统的请求,获得请求的网站;根据代理资源链表当前指示的超文本传输协议(HTTP)代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;权重值与HTTP代理的访问速度及稳定性相关;利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。本发明同时还公开了一种代理资源的调度装置。
Description
技术领域
本发明涉及互联网领域,尤其涉及一种代理资源的调度方法及装置。
背景技术
互联网拥有着海量的资源,为了有效地提取并利用这些资源,产生了爬虫系统。爬虫系统用于自动化地从互联网抓取特定的资源,它从一个或一批统一资源定位符(URL,Uniform Resource Locator)开始抓取,并进一步根据预定的规则从获取到的网络资源中提取新的URL加入到抓取队列,直到满足某种停止条件。
许多网站对爬虫系统的频繁访问有限制并启用了一定的反爬虫技术,例如,当识别出某IP地址在指定时段内对网站的访问次数超出一定频次时,将拒绝该IP地址的请求或者跳转到验证码页面。为此,爬虫系统多采用分布式技术,比如利用多IP地址并发请求来模拟真实用户的行为。在IP地址资源有限的情况下,一些爬虫系统通过利用代理以模拟多IP地址的请求。
相比爬虫系统所请求的海量网络资源数目,代理的数目是非常少的。因此,如何能利用速度快、稳定性好的代理,以提高爬虫系统的网络资源抓取效率是目前亟待解决的问题。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种代理资源的调度方法及装置。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种代理资源的调度方法,包括:
接收爬虫系统的请求,获得请求的网站;
根据代理资源链表当前指示的超文本传输协议(HTTP,HyperText TransferProtocol)代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;
利用所述代理资源链表,判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
上述方案中,所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点数据按照对应各HTTP代理的权重值降序排列。
上述方案中,所述根据为所述网站所维护的代理资源链表,为所述网站选择相应的HTTP代理,为:
将所述代理资源链表当前指针所指节点对应的HTTP代理,作为选择的HTTP代理;
上述方案中,所述利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效,为:
判断当所述当前指针所指节点数据中的代理状态是否为可用;
相应地,当所述当前指针所指节点数据中的代理状态为可用时,确定选择的HTTP代理在所述请求对应的时间窗内有效。
上述方案中,所述方法还包括:
当预设时间窗内代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;
将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
上述方案中,将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用后,所述方法还包括:
对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;
确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
上述方案中,所述方法还包括:
将n个HTTP代理按照对应的权重值降序进行排序;
基于代理资源链表生成策略,利用排序后的n个HTTP代理生成M组节点,依次将M组节点插入到请求的网站对应的代理资源链表中;
将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中,生成所述代理资源链表。
上述方案中,所述获得请求的网站,为:
根据所述请求的统一资源定位符URL,获得请求的网站。
上述方案中,所有网站的代理资源链表中的HTTP代理相同。
本发明实施例还提供了一种代理资源的调度装置,包括:获取单元、选择单元以及确定单元;其中,
所述获取单元,用于接收爬虫系统的请求,获得请求的网站;
所述选择单元,用于根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;
所述确定单元,用于利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
上述方案中,所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点按照对应各HTTP代理的权重值降序排列。
上述方案中,所述选择单元,具体用于:将所述代理资源链表当前指针所指节点对应的HTTP代理,作为选择的HTTP代理。
上述方案中,所述确定单元,具体用于:判断当所述当前指针所指节点数据中的代理状态是否为可用;当所述当前指针所指节点数据中的代理状态为可用时,确定选择的HTTP代理在所述请求对应的时间窗内有效。
上述方案中,所述装置还包括:监控单元,用于当预设时间窗内代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;并将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
上述方案中,所述监控单元,还用于对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;
确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
上述方案中,所述装置还包括:排序单元以及代理资源链表创建单元;其中,
所述排序单元,用于将n个HTTP代理按照对应的权重值降序进行排序;
所述代理资源链表创建单元,用于基于代理资源链表生成策略,利用排序后的n个HTTP代理生成M组节点,依次将M组节点插入到请求的网站对应的代理资源链表中;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中,生成所述代理资源链表。
本发明实施例提供的代理资源的调度方法及装置,接收爬虫系统的请求,获得请求的网站;根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。由于考虑了HTTP代理的权重值,访问速度快、稳定性高的HTTP代理具有高的权重值,同时,还考虑了选择的HTTP代理的可用性,如此,能有效地利用速度快、稳定性好的代理,进而能提高爬虫系统的网络资源抓取效率。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本发明实施例一代理资源的调度方法流程示意图;
图2为本发明实施例二代理资源的调度装置结构示意图;
图3为本发明实施例三调度代理资源的业务流程示意图;
图4为本发明实施例三从请求的网站的代理资源链表中获取可用的HTTP代理的流程示意图。
具体实施方式
下面结合附图及实施例对本发明再作进一步详细的描述。
在描述本发明实施例之前,先了解一下目前代理的使用方案。
由于与爬虫系统所请求的海量网络资源数目相比,代理的数目是非常少的,加之许多网站对爬虫系统的频繁访问有限制并启用了一定的反爬虫技术,所以不合适的使用代理将造成一个个代理被加入到待爬取网站的拒绝名单中,并因此影响爬虫系统的网络资源抓取效率。
为了合理地使用代理资源来提高爬虫系统的网络资源抓取效率,有人提出了一些解决方案,具体包括以下这几种:
第一种方案,申请号为201310471411.4的中国专利申请中,将资源下载划分为多个任务、将代理池划分为多个代理集合,每个任务具有一个下载线程池,每个下载线程从可支配的代理集合中获取一个代理。但是,这种方案存在以下几个缺点:
(1)将代理IP地址池分为多个IP地址集合,而不是不同网站的请求复用代理池,造成代理资源的利用率较低;(2)没有考虑代理在使用过程中可能的临时不可用(由于过于频繁的使用而被网站暂时加入到拒绝名单中),若在代理已不可用时仍继续使用它,将造成请求被网站频繁拒绝,影响爬虫系统的网络资源抓取效率;(3)缺乏从代理集合中优化获取代理的具体原则和方法;(4)没有考虑到各代理性能的差异并进而在使用时做区分对待,如果能尽可能多地利用速度快、稳定性好的代理,将能提高爬虫系统的网络资源抓取效率。
第二种方案,申请号为201410146375.9的中国专利申请中,使用最小使用次数优先队列来管理代理,队列由链表实现,链表按照代理的使用次数由小到大排列。但是,这种方案存在以下几个缺点:
(1)采用最小使用次数优先队列来管理代理,队列由链表实现,在代理获取时是获取链表表头的代理并在获取后删除,这种每次获取都需要删除将影响管理代理的效率;(2)没有考虑到各代理性能的差异并进而在使用时做区分对待,如果能尽可能多地利用速度快、稳定性好的代理,将能提高爬虫系统的网络资源抓取效率。
第三种方案,申请号为201410168725.1的中国专利申请中,使用长度为代理数量的环形链表来管理代理。但是,这种方案存在以下几个缺点:
(1)没有考虑代理在使用过程中可能的临时不可用(因为过于频繁的使用而被网站暂时加入到拒绝名单中),若在代理已不可用时仍继续使用它,将造成请求被网站频繁拒绝,影响爬虫系统的效率;(2)没有考虑到各代理性能的差异并进而在使用时做区分对待,如果能尽可能多地利用速度快、稳定性好的代理,将能提高爬虫系统的网络资源抓取效率。
从上面的描述中可以看出,目前的方案没有考虑如何能利用速度快、稳定性好的代理,来提高爬虫系统的网络资源抓取效率。
基于此,在本发明的各种实施例中:接收爬虫系统的请求,获得请求的网站;根据为代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;权重值与HTTP代理的访问速度及稳定性相关;利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
实施例一
本实施例代理资源的调度方法,应用于代理资源的调度装置,如图1所示,包括以下步骤:
步骤101:接收爬虫系统的请求,获得请求的网站;
具体地,根据所述请求的统一资源定位符(URL,Uniform Resource Locator),获得请求的网站。
步骤102:根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;
这里,所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;权重值与HTTP代理的访问速度及稳定性相关。
实际应用时,为每个已知的网站均维护着一个代理资源链表。在每个网站对应的代理资源链表中,HTTP代理完全相同,即可以是HTTP代理资源池中的所有HTTP代理,以达到HTTP代理复用的目的。所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点数据按照对应各HTTP代理的权重值降序排列。
其中,访问速度快、稳定性高的HTTP代理具有高权重值,使得可以充分利用访问速度快、稳定性高的HTTP代理,从而可以提高爬虫系统的网络资源抓取效率。
这里,各HTTP代理的权重值可以根据经验来设置。
HTTP代理的稳定性是指:HTTP代理访问速度的稳定性。其中,实际应用时,有些HTTP代理的访问速度可能会忽高忽低,即访问速度波动比较大,此时,说明HTTP代理的稳定性比较低。访问速度与HTTP代理所在的网络环境相关。
当所述根据为所述网站所维护的代理资源链表,为所述网站选择相应的HTTP代理,具体为:
将所述代理资源链表当前指针所指节点对应的HTTP代理,作为选择的HTTP代理。
这里,实际应用时,当第一次为所述网站选择HTTP代理时,从代理资源链表首部开始选择一个HTTP代理(选择第一个节点对应的HTTP代理);相应地,当第二次为所述网站选择HTTP代理时,从代理资源链表中选择首部的下一个HTTP代理(选择第二个节点对应的HTTP代理);以此类推,当第N次为所述网站选择HTTP代理时,且N-1次为所述网站选择的HTTP代理为代理资源链表尾部的HTTP代理时,由于代理资源链表为首尾相连的环形代理资源链表,所以此时可以选择代理资源链表首部的HTTP代理(选择第一个节点对应的HTTP代理)。
在一实施例中,在执行步骤102之前,该方法还可以包括:
生成所述代理资源链表。
具体地,将n个HTTP代理按照对应的权重值降序进行排序;
基于代理资源链表生成策略,利用排序后的n个HTTP代理生成M组节点,依次将M组节点插入到请求的网站对应的代理资源链表中;
将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中,生成所述代理资源链表。
其中,M为大于1的整数。
这里,实际应用时,M可以等于HTTP代理权重值中的最大值。
HTTP代理数据可以包括:代理的IP地址、端口号、账号、密码等信息。
实际应用时,从简单的角度出发,所述代理资源链表生成策略可以为遍历计数策略;相应地,生成所述代理资源链表的具体过程可以包括:
步骤a:将n个HTTP代理按照对应的权重值降序进行排序,生成代理链;
步骤b:设遍历计数为0;
步骤c:遍历计数增为1,按照排序后的n个HTTP代理,从头开始遍历该代理链,得到第一组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,在遍历时,若当前HTTP代理的权重值不小于遍历计数,即1,则把该HTTP代理的引用插入到代理链中。
步骤d:遍历计数增为2,按照排序后的n个HTTP代理,从头开始遍历该代理链,得到第二组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,在遍历时,若当前HTTP代理的权重值不小于遍历计数,即2,则把该HTTP代理的引用插入到代理链中。
步骤e:遍历计数增为3,按照排序后的n个HTTP代理,从头开始遍历该代理链,得到第三组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;以此类推,直至遍历计数大于HTTP代理权重值中的最大值。
举个例子来说,假设有A、B、C三个HTTP代理,其对应的权重值分别为3、2、1,则生成代理资源链表的过程包括以下步骤:
步骤A:将三个HTTP代理按照对应的权重值降序进行排序;
这里,排序后的三个HTTP代理的顺序是:A、B、C。
步骤B:设遍历计数为0;
步骤C:遍历计数增为1,按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第一组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,均不小于1,所以得到的第一组节点按照顺序依次为:A、B、C,将这三个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
步骤D:遍历计数增为2,按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第二组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,C的权重值小于2,所以得到的第二组节点按照顺序依次为:A、B,将这两个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
步骤E:遍历计数增为3,按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第三组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,B、C的权重值小于3,所以得到的第三组节点只有A,将这个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
这样,生成的代理资源链表从首部开始至尾部依次为:A、B、C、A、B、A,总共有六个节点。
其中,实际应用时,每个节点都有一个引用,以体现是哪个HTTP代理。
步骤103:利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
判断当所述当前指针所指节点数据中的代理状态是否为可用;
相应地,当所述当前指针所指节点数据中的代理状态为可用时,确定选择的HTTP代理在所述请求对应的时间窗内有效。
在一实施例中,该方法还可以包括:
当预设时间窗内HTTP代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;
将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
这里,实际应用时,由于代理资源的调度装置为每个已知的网站维护着其已用HTTP代理的成功统计,若在最近一段时间、最近若干次均没有成功(即预设时间窗内HTTP代理使用失败连续次数达到预设值),这可能意味着该HTTP代理已被网站加入到拒绝名单中。在获知HTTP代理的失败事件后,代理调度装置对该HTTP代理的状态鉴定,若判定该HTTP代理不可用(确定对应HTTP代理失效),则将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
另外,考虑到实际情况是经过一段时长后网站会将失效的HTTP代理从拒绝名单中移除,即HTTP代理又恢复可用性了。
基于此,将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用后,该方法还可以包括:
对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;
确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
本发明实施例提供的代理资源的调度方法,接收爬虫系统的请求,获得请求的网站;根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用,由于考虑了HTTP代理的权重值,访问速度快、稳定性高的HTTP代理具有高的权重值,同时,还考虑了选择的HTTP代理的可用性,如此,能有效地利用速度快、稳定性好的代理,进而能提高爬虫系统的网络资源抓取效率。
另外,当预设时间窗内HTTP代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用,如此,能及时、有效地避免爬虫系统使用失效的HTTP代理(即被网站拒绝的HTTP代理),从而有效地降低爬虫系统的抓取失败率,进而有效地提高爬虫系统的抓取效率。
同时,将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用后,对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用,如此,能及时、有效地使用HTTP代理,避免无效HTTP代理的闲置,从而避免了HTTP代理资源的浪费。
实施例二
为实现本发明实施例的方法,本实施例提供一种代理资源的调度装置,如图2所示,该装置包括:获取单元21、选择单元22以及确定单元23;其中,
所述获取单元21,用于接收爬虫系统的请求,获得请求的网站;
所述选择单元22,用于根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;权重值与HTTP代理的访问速度及稳定性相关;
所述确定单元23,用于利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
其中,所述获取单元21,具体用于:根据所述请求的URL,获得请求的网站。
实际应用时,为每个已知的网站均维护着一个代理资源链表。在每个网站对应的代理资源链表中,HTTP代理完全相同,即可以是HTTP代理资源池中的所有HTTP代理,以达到HTTP代理复用的目的。所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点数据按照对应各HTTP代理的权重值降序排列。
其中,访问速度快、稳定性高的HTTP代理具有高权重值,使得可以充分利用访问速度快、稳定性高的HTTP代理,从而可以提高爬虫系统的网络资源抓取效率。
这里,各HTTP代理的权重值可以根据经验来设置。
HTTP代理的稳定性是指:HTTP代理访问速度的稳定性。其中,实际应用时,有些HTTP代理的访问速度可能会忽高忽低,即访问速度波动比较大,此时,说明HTTP代理的稳定性比较低。访问速度与HTTP代理所在的网络环境相关。
相应地,所述选择单元22,具体用于:将所述代理资源链表当前指针所指节点对应的HTTP代理,作为选择的HTTP代理。
所述确定单元23,具体用于:判断当所述当前指针所指节点数据中的代理状态是否为可用;当所述当前指针所指节点数据中的代理状态为可用时,确定选择的HTTP代理在所述请求对应的时间窗内有效。
这里,实际应用时,当第一次为所述网站选择HTTP代理时,所述选择单元22从代理资源链表首部开始选择一个HTTP代理(选择第一个节点对应的HTTP代理);相应地,当第二次为所述网站选择HTTP代理时,所述选择单元22从代理资源链表中选择首部的下一个HTTP代理(选择第二个节点对应的HTTP代理);以此类推,当第N次为所述网站选择HTTP代理时,且N-1次为所述网站选择的HTTP代理为代理资源链表尾部的HTTP代理时,由于代理资源链表为首尾相连的环形代理资源链表,所以此时所述选择单元22可以选择代理资源链表首部的HTTP代理(选择第一个节点对应的HTTP代理)。
在一实施例中,该装置还用于生成所述代理资源链表。此时,该装置可以包括:排序单元以及代理资源链表创建单元;其中,
所述排序单元,用于将n个HTTP代理按照对应的权重值降序进行排序;
所述代理资源链表创建单元,用于基于代理资源链表生成策略,利用排序后的n个HTTP代理生成M组节点,依次将M组节点插入到请求的网站对应的代理资源链表中;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中,生成所述代理资源链表。
其中,M为大于1的整数。
这里,实际应用时,M可以等于HTTP代理权重值中的最大值。
HTTP代理数据可以包括:代理的IP地址、端口号、账号、密码等信息。
实际应用时,从简单的角度出发,所述代理资源链表生成策略可以为遍历计数策略;相应地,生成所述代理资源链表的具体过程可以包括:
步骤a:所述排序单元将n个HTTP代理按照对应的权重值降序进行排序,生成代理链;
步骤b:所述代理资源链表创建单元设遍历计数为0;
步骤c:遍历计数增为1,所述代理资源链表创建单元按照排序后的n个HTTP代理,从头开始遍历该代理链,得到第一组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,在遍历时,若当前HTTP代理的权重值不小于遍历计数,即1,则所述代理资源链表创建单元把该HTTP代理的引用插入到代理链中。
步骤d:遍历计数增为2,所述代理资源链表创建单元按照排序后的n个HTTP代理,从头开始遍历该代理链,得到第二组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,在遍历时,若当前HTTP代理的权重值不小于遍历计数,即2,则所述代理资源链表创建单元把该HTTP代理的引用插入到代理链中。
步骤e:遍历计数增为3,所述代理资源链表创建单元按照排序后的n个HTTP代理,从头开始遍历该代理链,得到第三组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;以此类推,直至遍历计数大于HTTP代理权重值中的最大值。
举个例子来说,假设有A、B、C三个HTTP代理,其对应的权重值分别为3、2、1,则生成代理资源链表的过程包括以下步骤:
步骤A:所述排序单元,将三个HTTP代理按照对应的权重值降序进行排序;
这里,排序后的三个HTTP代理的顺序是:A、B、C。
步骤B:设遍历计数为0;
步骤C:遍历计数增为1,所述代理资源链表创建单元按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第一组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,均不小于1,所以得到的第一组节点按照顺序依次为:A、B、C,所述代理资源链表创建单元将这三个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
步骤D:遍历计数增为2,所述代理资源链表创建单元按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第二组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,C的权重值小于2,所以得到的第二组节点按照顺序依次为:A、B,所述代理资源链表创建单元将这两个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
步骤E:遍历计数增为3,所述代理资源链表创建单元按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第三组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,B、C的权重值小于3,所以得到的第三组节点只有A,所述代理资源链表创建单元将这个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
这样,生成的代理资源链表从首部开始至尾部依次为:A、B、C、A、B、A,总共有六个节点。
其中,实际应用时,每个节点都有一个引用,以体现是哪个HTTP代理。
在一实施例中,该装置还可以包括:监控单元,用于当预设时间窗内代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;并将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
这里,实际应用时,由于所述监控单元为每个已知的网站维护着其已用HTTP代理的成功统计,若在最近一段时间、最近若干次均没有成功(即预设时间窗内HTTP代理使用失败连续次数达到预设值),这可能意味着该HTTP代理已被网站加入到拒绝名单中。在获知HTTP代理的失败事件后,所述监控单元对该HTTP代理的状态鉴定,若判定该HTTP代理不可用(确定对应HTTP代理失效),则将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
另外,考虑到实际情况是经过一段时长后网站会将失效的HTTP代理从拒绝名单中移除,即HTTP代理又恢复可用性了。
基于此,所述监控单元,还用于对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;并确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
实际应用时,所述获取单元21、确定单元23以及监控单元可由代理资源的调度装置中的中央处理器(CPU,Central Processing Unit)、微处理器(MCU,Micro ControlUnit)、数字信号处理器(DSP,Digital Signal Processor)或可编程逻辑阵列(FPGA,Field-Programmable Gate Array)结合收发机实现;所述选择单元22、排序单元以及代理资源链表创建单元可由代理资源的调度装置中的CPU、MCU、DSP或FPGA实现。
本发明实施例提供的代理资源的调度装置,所述获取单元21接收爬虫系统的请求,获得请求的网站;所述选择单元22根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;所述确定单元23利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效,如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。由于考虑了HTTP代理的权重值,访问速度快、稳定性高的HTTP代理具有高的权重值,同时,还考虑了选择的HTTP代理的可用性,如此,能有效地利用速度快、稳定性好的代理,进而能提高爬虫系统的网络资源抓取效率。
另外,当预设时间窗内HTTP代理使用失败连续次数达到预设值时,所述监控单元确定对应HTTP代理失效;并将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用,如此,能及时、有效地避免爬虫系统使用失效的HTTP代理(即被网站拒绝的HTTP代理),从而有效地降低爬虫系统的抓取失败率,进而有效地提高爬虫系统的抓取效率。
同时,将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用后,所述监控单元对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用,如此,能及时、有效地使用HTTP代理,避免无效HTTP代理的闲置,从而避免了HTTP代理资源的浪费。
实施例三
本实施例在实施例一、二的基础上,详细描述爬虫系统与代理资源的调度装置之间的交互、以及交互过程中代理资源的调度装置自身的处理流程。
在本实施例中,爬取每个访问频次受限的网站资源时,爬虫系统都从代理资源的调度装置请求可用代理。调度代理资源的业务流程图如图1所示。
图3为本实施例调度代理资源的业务流程图。如图3所示,本实施例调度代理资源的业务过程,包括以下步骤:
步骤301:爬虫系统启动,并触发代理资源的调度装置进行初始化;
步骤302:爬虫系统从请求队列中取出一个请求,生成爬虫请求,并发送至代理资源的调度装置;
步骤303:代理资源的调度装置收到请求后,获得请求的网站;
具体地,根据所述请求的URL,获得请求的网站。
实际应用时,由代理资源的调度装置的获取单元获得请求的网站。
步骤304:从请求的网站的代理资源链表中获取可用的HTTP代理,并发送给爬虫系统;
这里,为每个已知的网站均维护着一个代理资源链表。在每个网站对应的代理资源链表中,HTTP代理完全相同,即可以是HTTP代理资源池中的所有HTTP代理,以达到HTTP代理复用的目的。所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点数据按照对应各HTTP代理的权重值降序排列。M等于HTTP代理权重值中的最大值。
其中,权重值与HTTP代理的访问速度及稳定性相关,访问速度快、稳定性高的HTTP代理具有高权重值,使得可以充分利用访问速度快、稳定性高的HTTP代理,从而可以提高爬虫系统的网络资源抓取效率。
从请求的网站的代理资源链表中获取可用的HTTP代理的具体实现,如图4所示,包括以下步骤:
步骤304a:判断该网站的代理资源链表是否存在,如果不存在,则执行步骤304b,否则,执行步骤304d;
这里,代理资源的调度装置中为每个已知的网站都维护一个对应的代理资源链表,如果代理资源的调度装置的选择单元确定请求的网站为未知网站,则会触发代理资源的调度装置的排序单元以及代理资源链表创建单元为该网站生成一个对应的代理资源链表,即需要执行步骤304b。
步骤304b:生成体现各HTTP代理权重值且首尾相连的环形代理资源链表;
具体地,所述排序单元将n个HTTP代理按照对应的权重值降序进行排序;
所述排序单元将n个HTTP代理按照对应的权重值降序进行排序,生成代理链;
所述代理资源链表创建单元设遍历计数为0;
遍历计数增为1,所述代理资源链表创建单元按照排序后的n个HTTP代理,从头开始遍历该代理链,若当前HTTP代理的权重值不小于遍历计数,即1,则所述代理资源链表创建单元把该HTTP代理的引用插入到代理链中,得到第一组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
遍历计数增为2,所述代理资源链表创建单元按照排序后的n个HTTP代理,从头开始遍历该代理链,若当前HTTP代理的权重值不小于遍历计数,即2,则所述代理资源链表创建单元把该HTTP代理的引用插入到代理链中,得到第二组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
以此类推,直至遍历计数大于HTTP代理权重值中的最大值。
举个例子来说,假设有A、B、C三个HTTP代理,其对应的权重值分别为3、2、1,则生成代理资源链表的过程包括以下步骤:
步骤A:所述排序单元,将三个HTTP代理按照对应的权重值降序进行排序;
这里,排序后的三个HTTP代理的顺序是:A、B、C。
步骤B:设遍历计数为0;
步骤C:遍历计数增为1,所述代理资源链表创建单元按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第一组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,均不小于1,所以得到的第一组节点按照顺序依次为:A、B、C,所述代理资源链表创建单元将这三个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
步骤D:遍历计数增为2,所述代理资源链表创建单元按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第二组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,C的权重值小于2,所以得到的第二组节点按照顺序依次为:A、B,所述代理资源链表创建单元将这两个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
步骤E:遍历计数增为3,所述代理资源链表创建单元按照排序后的三个HTTP代理,从头开始遍历该代理链,得到第三组节点;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中;
这里,由于权重值分别为3、2、1,B、C的权重值小于3,所以得到的第三组节点只有A,所述代理资源链表创建单元将这个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中。
这样,生成的代理资源链表从首部开始至尾部依次为:A、B、C、A、B、A,总共有六个节点。
代理资源链表中每个节点的数据包括:具体HTTP代理的引用、该网站下的代理状态、以及HTTP代理数据。
其中,代理状态有可用和不可用两种。这里,不可用是指:鉴定为被网站拒绝的HTTP代理。
HTTP代理数据包括:代理的IP地址、端口号、账号、密码等信息。
实际应用时,由于每个网站的HTTP代理完全相同,所以为了避免为每个网站重复生成代理资源链表,可以将生成的代理资源链表缓存,当下一个未知网站需要代理资源链表时,可以直接从缓存中拷贝该代理资源链表使用即可。
步骤304c:所述代理资源链表创建单元将当前指针指向代理资源链表首部的首个节点,获取首个节点对应的HTTP代理,并将代理资源链表中的指针指向下一个节点,之后执行步骤304g;
这里,由所述选择单元获取首个节点对应的HTTP代理,并将代理资源链表中的指针指向下一个节点。
步骤304d:获取该网站的代理资源链表;
步骤304e:获取代理资源链表中当前指针所指的节点对应的HTTP代理,并将代理资源链表中的指针指向下一个节点,之后执行步骤304f;
具体地,由所述选择单元获取该网站的代理资源链表,并获取代理资源链表中当前指针所指的节点对应的HTTP代理,将代理资源链表中的指针指向下一个节点。
步骤304f:判断获取的HTTP代理是否可用,如果可用,则执行步骤304g,否则,执行步骤304e;
这里,根据节点数据中的代理状态可以判断获取的HTTP代理是否可用,如果代理状态为可用,则说明获取的HTTP代理可用,如果代理状态为不可用,则明获取的HTTP代理不可用。
这里,重复执行步骤304e及204f,直至确定获取的节点对应的HTTP代理可用。
步骤304g:将获取的HTTP代理作为所述请求对应的HTTP代理。
这里,由代理资源的调度装置的确定单元判断获取的HTTP代理是否可用,并确定HTTP代理可用时,将获取的HTTP代理作为所述请求对应的HTTP代理。
步骤305:爬虫系统利用返回的HTTP代理到对应的网站下载网络资源(即web资源);
步骤306:下载完成后,爬虫系统判断是否下载成功,如果成功,则执行步骤307,否则,执行步骤309;
步骤307:爬虫系统进行web资源的分析处理;
步骤308:根据分析处理结果,爬虫系统判断下载的web资源是否不为要求验证登录的页面,且不为网站拒绝而产生的非法资源,如果是,则执行步骤302,否则,执行步骤309;
这里,根据分析处理结果,当爬虫系统确定下载的web资源为验证码页面或者是因网站拒绝而产生的非法资源时,执行步骤309,即向代理资源的调度装置报告代理失败事件。
步骤308完成后,爬虫系统会重复执行步骤302,从请求队列中再取出一个请求,以便获得该请求对应的HTTP代理资源。
步骤309:爬虫系统向代理资源的调度装置报告代理失败事件,以通告代理资源的调度装置HTTP代理失败,之后执行步骤310;
步骤310:爬虫系统将该请求重新添加至请求队列中;
步骤311:代理资源的调度装置收到代理失败事件后,鉴定对应HTTP代理的可用性;
这里,实际应用时,由于步骤310和311的执行主体分别是爬虫系统和代理资源的调度装置,所以这两个步骤在执行上没有先后顺序,既可以先执行步骤310,再执行步骤311,也可以先执行步骤311,再执行步骤310,也可以是步骤310和311同时执行。
步骤312:代理资源的调度装置判断HTTP代理是否可用,如果不可用,则执行步骤313;
具体地,当预设时间窗内代理使用失败连续次数达到预设值时,代理资源的调度装置的监控单元确定对应HTTP代理失效(不可用),需要执行步骤313。
其中,当预设时间窗内代理使用失败连续次数达到预设值,这说明可能该代理已被网站加入到拒绝名单中,所以需要将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
当确定HTTP代理可用时,则不进行任何处理。
步骤313:代理资源的调度装置更新网站的代理资源链表。
具体地,由代理资源的调度装置的监控单元鉴定对应HTTP代理的可用性,判断HTTP代理是否可用,并确定HTTP代理不可用时,将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用(即将代理资源链表中该代理的所有引用的代理状态标记为不可用)。
另外,考虑到实际情况是经过一段时长后网站会将失效的HTTP代理从拒绝名单中移除,即HTTP代理又恢复可用性了。所以所述监控单元对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;并确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
这里,实际应用时,可以由代理调度装置的一个后台线程对各代理资源链表中代理状态为不可用的HTTP代理进行周期性检查,若代理状态为不可用的时长已经超过一定时长,则将相应代理资源链表中的代理状态变更为可用。
通过及时避免使用已被网站拒绝的HTTP代理(失效HTTP代理),可以降低爬虫系统的抓取失败率,进而提高爬虫系统的抓取效率。
从上面的描述中可以看出,采用本发明实施例的方案,具有以下技术优点:
为每个网站维护一个代理具有权重值的、首尾相连的环形代理资源链表,具有访问速度快、稳定性高的HTTP代理具有高权重值,使得可以充分利用访问速度快、稳定性高的HTTP代理,从而提高爬虫系统的抓取效率。
根据预设时间窗口内的失败次数来判定HTTP代理是否有效,当发现某代理针对某网站不可用时,把该网站的代理资源链表中该代理的所有引用节点标记为不可用,当经过一段时间后预估该HTTP代理恢复可用时,再次把该网站的代理资源链表中该代理的所有引用标记为可用,通过及时避免使用已被网站拒绝的代理,可以降低爬虫系统的抓取失败率,进而提高爬虫系统的抓取效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (14)
1.一种代理资源的调度方法,其特征在于,所述方法包括:
接收爬虫系统的请求,获得请求的网站;
根据代理资源链表当前指示的超文本传输协议HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,依次将M组节点数据插入到代理资源链表中,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点数据按照对应各HTTP代理的权重值降序排列;
利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
2.根据权利要求1所述的方法,其特征在于,
所述根据为所述网站所维护的代理资源链表,为所述网站选择相应的HTTP代理,为:
将所述代理资源链表当前指针所指节点对应的HTTP代理,作为选择的HTTP代理。
3.根据权利要求1所述的方法,其特征在于,
所述利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效,为:
判断当所述当前指针所指节点数据中的代理状态是否为可用;
相应地,当所述当前指针所指节点数据中的代理状态为可用时,确定选择的HTTP代理在所述请求对应的时间窗内有效。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当预设时间窗内代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;
将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
5.根据权利要求4所述的方法,其特征在于,将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用后,所述方法还包括:
对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;
确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将n个HTTP代理按照对应的权重值降序进行排序;
基于代理资源链表生成策略,利用排序后的n个HTTP代理生成M组节点,依次将M组节点插入到请求的网站对应的代理资源链表中;
将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中,生成所述代理资源链表。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述获得请求的网站,为:
根据所述请求的统一资源定位符URL,获得请求的网站。
8.根据权利要求1至6任一项所述的方法,其特征在于,所有网站的代理资源链表中的HTTP代理相同。
9.一种代理资源的调度装置,其特征在于,所述装置包括:获取单元、选择单元以及确定单元;其中,
所述获取单元,用于接收爬虫系统的请求,获得请求的网站;
所述选择单元,用于根据代理资源链表当前指示的HTTP代理,为所述网站选择相应的HTTP代理;所述代理资源链表为为所述网站维护的代理资源链表;所述代理资源链表为各HTTP代理具有权重值且首尾相连的环形代理资源链表;所述代理资源链表包含个节点数据;其中,n表示HTTP代理的个数;wj表示第j个HTTP代理的权重值,权重值为自然数;所述代理资源链表中,个节点数据分成为M个组,依次将M组节点数据插入到代理资源链表中,第i组包含的节点数目大于第i+1组包含的节点数目,且每组中的各节点按照对应各HTTP代理的权重值降序排列;
所述确定单元,用于利用所述代理资源链表判断选择的HTTP代理在所述请求对应的时间窗内是否有效;如果有效,则将选择的HTTP代理分配给所述爬虫系统使用。
10.根据权利要求9所述的装置,其特征在于,
所述选择单元,具体用于:将所述代理资源链表当前指针所指节点对应的HTTP代理,作为选择的HTTP代理。
11.根据权利要求9所述的装置,其特征在于,
所述确定单元,具体用于:判断当所述当前指针所指节点数据中的代理状态是否为可用;当所述当前指针所指节点数据中的代理状态为可用时,确定选择的HTTP代理在所述请求对应的时间窗内有效。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:监控单元,用于当预设时间窗内代理使用失败连续次数达到预设值时,确定对应HTTP代理失效;并将所述代理资源链表中失效HTTP代理对应的所有节点数据中的代理状态置为不可用。
13.根据权利要求12所述的装置,其特征在于,所述监控单元,还用于对失效HTTP代理对应的所有节点数据中的代理状态进行周期性检查;
确定失效HTTP代理的代理状态置为不可用的时长超过预设时长时,将失效HTTP代理对应的所有节点数据中的代理状态置为可用。
14.根据权利要求9至13任一项所述的装置,其特征在于,所述装置还包括:排序单元以及代理资源链表创建单元;其中,
所述排序单元,用于将n个HTTP代理按照对应的权重值降序进行排序;
所述代理资源链表创建单元,用于基于代理资源链表生成策略,利用排序后的n个HTTP代理生成M组节点,依次将M组节点插入到请求的网站对应的代理资源链表中;将每个节点数据中的代理状态置为可用,并在对应的HTTP代理数据插入至对应的节点数据中,生成所述代理资源链表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510583823.6A CN106534244B (zh) | 2015-09-14 | 2015-09-14 | 一种代理资源的调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510583823.6A CN106534244B (zh) | 2015-09-14 | 2015-09-14 | 一种代理资源的调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106534244A CN106534244A (zh) | 2017-03-22 |
CN106534244B true CN106534244B (zh) | 2020-01-17 |
Family
ID=58348514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510583823.6A Active CN106534244B (zh) | 2015-09-14 | 2015-09-14 | 一种代理资源的调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106534244B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
CN107395782A (zh) * | 2017-07-19 | 2017-11-24 | 北京理工大学 | 一种基于代理池的ip限制受控源信息抓取方法 |
LT3805958T (lt) | 2017-08-28 | 2024-03-12 | Bright Data Ltd. | Būdas pagerinti turinio parsisiuntimą, pasirenkant tunelinius įrenginius |
CN107832355B (zh) * | 2017-10-23 | 2019-03-26 | 北京金堤科技有限公司 | 一种爬虫程序的代理获取的方法及装置 |
CN107864143B (zh) * | 2017-11-13 | 2020-05-15 | 翼果(深圳)科技有限公司 | 自演进的高效的代理资源供应系统及方法 |
CN108595543A (zh) * | 2018-04-08 | 2018-09-28 | 北京知道创宇信息技术有限公司 | 数据抓取方法、装置及网络爬虫系统 |
CN108551452B (zh) * | 2018-04-18 | 2021-01-08 | 平安科技(深圳)有限公司 | 网络爬虫方法、终端及存储介质 |
CN109274782B (zh) * | 2018-08-24 | 2020-04-10 | 北京创鑫旅程网络技术有限公司 | 一种采集网站数据的方法及装置 |
EP4177771A1 (en) | 2019-02-25 | 2023-05-10 | Bright Data Ltd. | System and method for url fetching retry mechanism |
CN110062025B (zh) * | 2019-03-14 | 2022-09-09 | 深圳绿米联创科技有限公司 | 数据采集的方法、装置、服务器及存储介质 |
EP4030318A1 (en) | 2019-04-02 | 2022-07-20 | Bright Data Ltd. | System and method for managing non-direct url fetching service |
CN113132449A (zh) * | 2020-01-16 | 2021-07-16 | 京东方科技集团股份有限公司 | 一种调度方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1716243A (zh) * | 2004-06-30 | 2006-01-04 | 马·研究公司 | 利用网络爬行者程序在网上进行价格收集的方法 |
US7774782B1 (en) * | 2003-12-18 | 2010-08-10 | Google Inc. | Limiting requests by web crawlers to a web host |
CN103347068A (zh) * | 2013-06-26 | 2013-10-09 | 中国(南京)未来网络产业创新中心 | 一种基于代理集群网络缓存加速方法 |
CN103914568A (zh) * | 2014-04-24 | 2014-07-09 | 厦门市美亚柏科信息股份有限公司 | 调度http代理的方法和装置 |
-
2015
- 2015-09-14 CN CN201510583823.6A patent/CN106534244B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774782B1 (en) * | 2003-12-18 | 2010-08-10 | Google Inc. | Limiting requests by web crawlers to a web host |
CN1716243A (zh) * | 2004-06-30 | 2006-01-04 | 马·研究公司 | 利用网络爬行者程序在网上进行价格收集的方法 |
CN103347068A (zh) * | 2013-06-26 | 2013-10-09 | 中国(南京)未来网络产业创新中心 | 一种基于代理集群网络缓存加速方法 |
CN103914568A (zh) * | 2014-04-24 | 2014-07-09 | 厦门市美亚柏科信息股份有限公司 | 调度http代理的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106534244A (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106534244B (zh) | 一种代理资源的调度方法及装置 | |
CN109933701B (zh) | 一种基于多策略融合的微博数据获取方法 | |
JP6441404B2 (ja) | クライアントをアップデートするための方法およびデバイス | |
CN110020062B (zh) | 一种可定制的网络爬虫方法及系统 | |
CN108123820B (zh) | 一种网络设备信息采集方法和装置 | |
CN109617996B (zh) | 文件上传及下载方法、服务器及计算机可读存储介质 | |
Subhlok et al. | Automatic node selection for high performance applications on networks | |
US10044820B2 (en) | Method and system for automated transaction analysis | |
CN108875091A (zh) | 一种统一管理的分布式网络爬虫系统 | |
CN112954089B (zh) | 一种解析数据的方法、装置、设备以及存储介质 | |
CN114356557B (zh) | 一种集群扩容方法及装置 | |
JP2020102838A5 (zh) | ||
CN111158892B (zh) | 一种任务队列生成方法、装置及设备 | |
WO2004042571A2 (en) | A communication method with reduced response time in a distributed data processing system | |
CN113656673A (zh) | 面向广告投放的主从分布内容爬取机器人 | |
CN109446441B (zh) | 一种通用的网络社区可信分布式采集存储系统 | |
CN104967698A (zh) | 一种爬取网络数据的方法和装置 | |
Srivastava et al. | Data preprocessing techniques in web usage mining: A literature review | |
CN101739401A (zh) | 网络搜索方法和设备 | |
CN112395357A (zh) | 一种数据收集方法、装置和电子设备 | |
CN113596105B (zh) | 内容的获取方法、边缘节点及计算机可读存储介质 | |
CN110442769A (zh) | 分布式数据爬取系统、方法、装置、设备和存储介质 | |
CN115951845A (zh) | 一种磁盘管理方法、装置、设备及存储介质 | |
EP2321931A2 (en) | Shared hosting using host name affinity | |
CN112231093A (zh) | 基于代码模板和协程池的数据采集方法、系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |