一种定向信息抓取场景中大规模ip地址资源使用方法

文档序号:9931437阅读:585来源:国知局
一种定向信息抓取场景中大规模ip地址资源使用方法
【技术领域】
[0001]本发明涉及特定网络信息获取领域,具体涉及一种定向信息抓取场景中大规模IP地址资源使用方法,能够在单IP对特定网络资源访问频率受限,大量任务并发执行的情况下,高效使用和分配大量IP地址资源。
【背景技术】
[0002]随着互联网的快速发展,网络上的数据资源也急剧膨胀。在某些需要对网络资源进行集中获取的场景中,例如搜索引擎的爬虫爬取某个网站的网页,由于目标网页数量巨大,简单地单一线程串行执行获取任务已经远远不能达到性能上的要求。此时较为常用的方法是同时执行多个信息获取任务,提高系统的吞吐量,从而缩短批量任务的总体完成时间。常见地并发执行多个网络任务的方法包括使用多线程或者事件驱动(10复用)的编程模型。多任务并发执行的一个直接结果是加快了爬取程序对目标网站的访问频率。而通常目标网站从系统能力的角度出发,为了保证普通用户对网站的正常访问,会在发现某个IP地址过于频繁地访问网站后对其进行拒绝,使其不能获取网站正常的响应,即通常情况下单个IP地址对某个特定网络资源(例如某个域名、URL或者符合特定模式的URL)的访问频率是受限制的,不能高于某个特定的值。因此爬取程序的吞吐量一方面依赖于其执行任务的并发程度(通常取决于CPU、内存和网卡等硬件资源的配置以及所采用并发模型的效率),另一方面则依赖于其所拥有的IP地址的数量,因为在给定IP地址数量为η,单个IP地址对网络资源的最高访问频率为q每秒的情况下,爬取程序吞吐量所能达到的理论上界为n*q每秒。
[0003]因此,通常情况下在进行特定网络资源集中采集的场景中会同时使用多个IP地址并发地执行获取任务。若程序的并发能力上界高于多IP地址总体吞吐量上界,即系统并发能力不构成系统总体吞吐量的限制因素时,此时程序设计所面临的问题是如何向多个并发执行的信息抓取任务有效地分配IP地址,使得所有IP地址接近其访问频率上限,既不因为访问过慢造成资源的浪费,又不因为访问过快而造成IP地址被目标网站屏蔽。
[0004]同时在实际的场景中,为了节约抓取成本,大量的IP地址通常是互联网上公开的代理(HTTP或者Socks代理),代理的质量和稳定性通常无法控制,甚至会出现整体可用率较差的情况,若在抓取过程中不加区别地使用将造成大量无谓的访问异常。

【发明内容】

[0005]基于以上定向信息抓取场景中存在的问题,本发明的目的是提供一种定向信息抓取场景中大规模IP地址资源使用方法。解决两个方面的问题,首先着力解决并发任务中IP地址的分配问题,在访问频率的约束下实现IP地址访问能力充分利用;其次提供IP地址可用性的评估机制,提尚网络?目息获取任务的成功率。
[0006]为达上述目的,本发明采取的具体技术是:
[0007]—种定向信息抓取场景中大规模IP地址资源使用方法,包括以下步骤:
[0008]针对设置了访问频率限制的网络资源,根据一IP地址集合L中每个IP地址下次可访问该网络资源的时刻建立包含L中全部IP地址的优先队列;
[0009]在向某个网络信息采集任务分配可用IP地址时,取出优先队列中优先级最高的IP地址,设其下次可访问该网络资源的时刻为t,并更新该IP地址的下次可访问该网络资源的时刻,重新将其放入优先队列;若当前时刻大于或等于t,则当前任务可立即使用该IP地址,否则当前任务阻塞直至当前时刻大于或等于t,方可使用该IP地址;
[0010]针对每个IP地址维护该IP地址的使用次数un和访问失败次数fn,当从优先队列中取出的优先级最高的IP地址时,以Ι-fn/un的概率选用,fn/un的概率放弃;若该优先级最高的IP地址被放弃,则继续根据优先级从优先队列中取出IP地址,直到有一个IP地址被选用。
[0011]进一步地,所述优先队列中,IP地址的下次访问该网络资源的时刻越小则其优先级越高。
[0012]进一步地,根据目标网络资源的访问频率限制值来更新该IP地址的下次可访问该网络资源的时刻。
[0013]进一步地,所述根据一IP地址集合L中每个IP地址下次可访问该网络资源的时刻建立包含L中全部IP地址的优先队列包括:
[0014]I)建立原始类型为(IP,ts)的优先队列Q,其中ts表示该IP地址最早的下次可访问该网络资源的时刻,在优先队列Q中,ts的值越小,元素的优先级越高;
[0015]2)对L中的每个IP地址,构造元素(IP,当前时刻)并放入优先队列Q中,最终使Q中的元素数量等于L中的元素数量。
[0016]进一步地,所述针对每个IP地址维护该IP地址的使用次数un和访问失败次数fn包括:
[0017]建立key为IP地址,value为(fn,un)的字典S,对L中的每个IP地址,构造key为该IP地址,value为(O,O)的元素并放入S中;最终S中的元素数量等于L中的元素数量。
[0018]进一步地,所述当从优先队列中取出的优先级最高的IP地址时,以Ι-fn/un的概率选用,fn/un的概率放弃;若该优先级最高的IP地址被放弃,则继续根据优先级从优先队列中取出IP地址,直到有一个IP地址被选用包括:
[0019]I)维护一个计数器,表示步骤2)执行的次数c,并初始化c = O ;
[0020]2)从优先队列Q中取出优先级最高的元素(IP,ts),之后向Q中放入元素(IP,max(当前时刻,ts)+T),并令c = c+1。若c大于等于预设的一固定值,直接转至步骤5);
[0021]3)根据IP从字典S中获得对应的(fn,un);若un小于等于某个固定值,转至步骤5);
[0022]4)生成一个位于区间[0,1)之间的浮点类型的随机数r,若r小于Ι-fn/un,则转至步骤5),否则转至步骤2)。
[0023]5)对于步骤2)中选出的元素(IP,ts),若当前时刻t大于或等于ts,则返回IP;否则,睡眠ts-t的时间之后返回IP。
[0024]通过采取上述技术方案:首先通过优先选用最近可使用的IP地址,使得在系统并发能力不构成性能瓶颈的场景下,每个IP地址的访问能力被充分使用,达到IP地址访问频率的上限;同时在不存在IP地址可立即使用的情况下阻塞当前抓取任务,防止IP地址被过于频繁地使用,因而可避免被目标网站屏蔽。其次通过每个IP地址的访问历史估计该IP地址的可用性,根据IP地址的可用性确定该地址被选用的概率,其结果是可用性较强的IP地址被使用地较为频繁,而可用性较差的IP地址则被较少地使用,有效地提高了网络任务的成功率。因此在定向信息抓取的场景中,本发明提供的方法可高效地使用大量的IP地址进行并发的信息采集。对本发明中的方法进行软件实现并用来进行实际的网络信息抓取任务后,结果表明本发明的大量IP地址使用方法可使得系统性能接近理论上的吞吐量上限。
【附图说明】
[0025]图1本发明一采集应用场景中任务执行期间IP地址数量变化曲线。
[0026]图2a、图2b、图2c为本发明一采集应用场景中3批IP地址可用率分布示意图。
[0027]图3a、图3b、图3c为本发明一采集应用场景中3批IP地址使用次数分布示意图。
[0028]图4a和图4b分别为本发明一采集应用场景中任务执行期间发送HTTP请求和接收响应的吞吐量。
【具体实施方式】
[0029]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面配合所附图对本发明的特征和优点作详细说明。
[0030]本发明的定向信息抓取场景中大规模IP地址资源使用方法包含IP地址分配机制及基于该分配机制的IP地址可用性评估机制。
[0031]IP地址分配机制:针对特定的设置了访问频率限制的网络资源,根据IP地址下次可用时刻(即下次可访问网络资源的时刻)建立包含全部IP地址的优先队列(下次可用时刻值越小,优先级越高)。在向某个网络信息采集任务分配可用IP时,取出优先级最高(下次可用时刻最小)的IP地址(设其可用时刻为时刻t),并随即根据目标网络资源的访问频率限制值来更新该IP地址的下次可用时刻,重新将其放入优先队列。若当前时刻大于或等于t,则当前任务可立即使用该IP地址,否则当前任务阻塞直至当前时刻大于或等于t,方可使用该IP地址。
[0032]IP地址可用性评估机制:针对每个IP地址维护该IP地址的使用次数un和访问失败次数f η,则当前该IP地址的访问成功率可定义为1-fn/un。在IP地址分配机制的基础上,增加根据IP地址访问成功率确定是否选用该IP地址的机制。即对于从优先队列中取出的IP地址,以1-fn/un的概率选用,fn/un的概率放弃;若当前IP地址被放弃,则继续从优先队列中取出IP地址,直到有一个IP地址被选用。
[0033]在架构上,本发明的定向信息采集中大量IP地址资源使用方法由初始化阶段和使用接口组成。初始化阶段在信息采集开始之前进行,用于建立IP地址优先队列并初始化每个IP地址的可用率。在采集任务进行中,本方法提供的使用接口包括IP
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1