一种应用于网络爬虫的动态流量控制方法与流程

文档序号:11156390阅读:612来源:国知局
一种应用于网络爬虫的动态流量控制方法与制造工艺

本发明是关于网络爬虫的动态流量控制机制领域,特别涉及一种应用于网络爬虫的动态流量控制方法。



背景技术:

随着互联网技术的快速发展,互联网已经成为大量信息的载体,为了高效提取和利用互联网上的信息,网络爬虫技术应运而生。

网络爬虫是一种以固定规则自动抓取网页信息的程序或脚本。网络爬虫通常以一个或多个URL开始,然后获取初始网页上的URL。在爬行网页的过程中,爬虫会不断地获取当前页面的URL并将这些URL加入队列。爬虫定期检查该队列,如果该队列不为空,则爬行队列中的URL。爬虫会在满足一定的停止条件后自动停止。

由于网络爬虫会不断获取当前爬行网页中的URL并加入列队继续爬行,这会导致爬虫在短时间内向站点发送大量请求,从而导致网络和服务器负载迅速增高,使得请求响应的往返时间显著变大,严重时可能会导致网络或服务器崩溃。

网络爬虫发送的是http请求包,其工作在网络层次结构中的应用层,同时用户只能在客户端对爬虫的发包行为进行约束,从而减少服务端的压力。现有技术中,还没有实现在客户端的用于缓解服务端压力的应用层流量控制方法。

一方面,流量控制以实现在服务端为主,专利2011103622224便是实现在服务端的应用层流量控制,通过黑名单的方法将爬虫请求包进行过滤,然而该方法局限于服务端,爬虫的实现者基本上没有操作服务器的权限,因而该方法难以被爬虫实现者所采用,并且过滤了爬虫请求包也会对爬虫抓取数据的完整性产生很大的影响。

另一方面,流量控制一般实现在更底层,比如传输层。著名的滑动窗口机制就是实现在传输层上的流量控制方法,通过限制发送窗口的大小来平衡客户端传输的速度。但是该类方法只是保证了端到端传输的稳定,无法保证服务器工作的稳定性,难以避免服务器拒绝服务的现象产生。



技术实现要素:

本发明的主要目的在于克服现有技术中的不足,提供一种定位精准、定位速度快、夹持可靠的夹持装置。为解决上述技术问题,本发明的解决方案是:

提供一种应用于网络爬虫的动态流量控制方法,用于对爬虫程序进行流量控制,所述应用于网络爬虫的动态流量控制方法具体包括下述步骤:

(1)爬虫程序接收到请求包的响应时,计算本次传输的往返时延R;

再用该往返时延R更新RTT估计器RTT估计器的计算式如下:

其中,α是平滑因子,R是实际测量的往返时延;

然后每隔TIME_INTERVAL时间(此时间预先设定,且不可过长导致流控的响应速度减慢,同时要保证该时间内可以收到充分数量的包,收到10个包左右的时间比较合适)统计该时间间隔内RTT估计器的最小值和最大值具体更新方式为:

区间开始时重置

区间内更新

种反映当前爬虫程序对网络或服务器的负载大小,这两个值用于作为动态流量控制的判断参数;

(2)再将该往返时延R与RTT统计参数对比,并根据对比结果调整爬虫程序当前的最大并发连接数MaxRequestCount,用于控制爬虫程序的每秒发包数,具体为:

当往返时延R小于或者往返时延R小于阈值RTT_MIN(通常设置为一个较小的值,当R小于该值时强制增加最大并发连接数),即时:

将爬虫程序的最大并发连接数MaxRequestCount递增一个常量值CONNECT_COUNT_INCREASE_VALUE(通常设定为1,也可根据需要适当增加),即MaxRequestCount+=CONNECT_COUNT_INCREASE_VALUE;

当往返时延R大了或者往返时延R大于阈值RTT_MAX(通常设置为一个较大的值,当R大于该值时强制减少最大并发连接数),即时:

将爬虫程序的最大并发连接数MaxRequestCount递减一个常量值CONNECT_COUNT_DECREASE_VALUE(通常设定为1,也可根据需要适当增加),即MaxRequestCount-=CONNECT_COUNT_DECREASE-VALUE;

其中,RTT_MIN、RTT_MAX为常数阈值,CONNECT_COUNT_INCREASE_VALUE为爬虫程序最大并发连接数的递增常量,CONNECT_COUNT_DECREASE_VALUE为爬虫程序最大并发连接数的递减常量。

本发明的工作原理:通过对爬虫程序请求响应的往返时延进行实时监控,当往返时延比较小时,说明当前网络和服务器负载较小,网络和服务器的吞吐量可以进一步提高,于是增大爬虫程序的最大并发连接数,以提高网络和服务器的利用率。当往返时延比较大时,说明当前网络和服务器的负载较大,网络和服务器可能已经达到饱和,于是减小爬虫程序的最大并发连接数,以降低网络和服务器的负载压力。

与现有技术相比,本发明的有益效果是:

本发明实现了基于应用层http包的、部署在客户端上的爬虫程序发包速度调节程序,可以减少对服务器造成的压力,有效避免服务器因为爬虫软件快速发包造成的拒绝访问等崩溃错误。

附图说明

图1为本发明进行动态流量控制的流程图。

具体实施方式

下面结合附图与具体实施方式对本发明作进一步详细描述:

下面的实施例可以使本专业的专业技术人员更全面地理解本发明,但不以任何方式限制本发明。

如图1所示的一种应用于网络爬虫的动态流量控制方法,其步骤具体为:

1.1)爬虫程序接收请求包的响应,并计算本次传输的往返时延R,然后通过R来更新RTT估计器并根据更新和

1.2)计算当前时间距上次重置的时间差是否超过TIME_INTERVAL:如果是,则执行1.3);如果否,则执行1.4);

1.3)使用RTT估计值的值重置

1.4)判断往返时延R是否小于或者往返时延R是否小于阈值RTT_MIN:如果是,则执行1.5);如果否,则执行1.6);

1.5)将爬虫程序的最大并发连接数MaxRequestCount递增一个常量值CONNECT_COUNT_INCREASE_VALUE;

1.6)判断往返时延R是否大于或者往返时延R是否大于阈值RTT_MAX:如果是,则执行1.7);如果否,则执行1.8);

1.7)将爬虫程序的最大并发连接数MaxRequestCount递减一个常量值CONNECT_COUNT_DECREASE_VALUE;

1.8)动态流量控制程序执行完毕。

最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1