当前位置: 首页 > 专利查询>复旦大学专利>正文

一种基于连接代理优化管理的多线程网络爬虫处理方法技术

技术编号:10189279 阅读:286 留言:0更新日期:2014-07-08 11:12
本发明专利技术属于信息处理技术领域,具体为一种基于连接代理优化管理的多线程网络爬虫处理方法,其首先获取网络上公开代理服务器,测试代理服务器的网络连接性能,并根据代理服务器性能得到最优的线程数量;然后对代理服务器池进行管理,并为每一个Http请求设置一个有效代理服务器;最终执行Web页面访问请求。本发明专利技术的有益效果在于:其通过计算得到线程数目,能有效地使资源得到最大的利用又不造成资源的浪费;均衡每个可用代理服务器的使用次数,有效地避免频繁访问被服务器端检测出来。

【技术实现步骤摘要】
一种基于连接代理优化管理的多线程网络爬虫处理方法
本专利技术涉及信息处理
,具体涉及一种新型的Web页面信息获取方法,特别是在现有网络爬虫原理的基础上进行连接代理优化管理设计的新型网络爬虫处理方法。
技术介绍
随着网络的迅速发展,网络成为大量信息的载体,如何有效地提取这些信息成为一个巨大的挑战。网络爬虫是搜索引擎系统中十分重要的组成部分,它负责从互联网中搜集网页,采集信息,这些网页信息用于建立索引从而为搜索引擎提供支持,其性能的优劣直接影响着搜索引擎的效果。随着网络信息量几何级的增长,对网络爬虫页面采集的性能和效率的要求也越来越高。我们总是希望在更短的时间内,获取更多的数据,但是,这会对网站造成非常高的负载,也带来了网络流量增加,泄露隐私数据等问题,很多网站采用爬虫检测技术,分析Web访问日志,当判断出爬虫时,则禁止爬虫使用地址,拒绝爬虫继续访问。为让爬虫能够避免被监测出来,针对网站对爬虫检测方法,目前已经设计出了大量的分布式网络爬虫,伪装网络爬虫和使用代理的网络爬虫,如斯坦福大学设计的Google爬虫、DisguisedSpider、InternetArchive爬虫。它们采取更换UserAgent,设置访问时间间隔和优化URL访问策略,使用代理服务器、多线程等方法优化爬虫。但在实际使用爬虫时,会遇到如下问题:(1)间隔参数没有具体的定义标准,爬虫性能得不到保证。当网站对爬虫检测非常严格时,爬虫需要很长的间隔时间,导致爬虫实用性不高,间隔缩短,会导致爬虫被鉴别出来而不可用。(2)使用代理服务器,需要根据代理服务器性能和多线程的数量来优化爬虫效率,但是目前的研究中并没有给出如何优化的具体方法,如果设置了不合适的关系值,那么爬虫效率会非常低。由此可见,在现有爬虫技术的基础上,采用合理的代理连接管理方法来对爬虫数据获取线程进行优化配置,对于提升爬虫性能、避免爬虫被服务器拒绝是非常重要的。本专利技术给出了一种符合这种要求的设计方法。
技术实现思路
本专利技术的主要目的是针对爬虫访问Web页面时被拒的问题,提出一种基于连接代理优化管理的多线程网络爬虫,避免被服务器端检测。这种方法具有一定的适应能力,能够解决爬虫在进行Web页面获取时被拒绝的问题。这种方法充分利用了现有互联网上公开的网络连接代理服务,在多线程爬行中进行了代理连接的优化管理和设计,通过代理服务的自动选择机制避免重复使用同一个客户端IP地址连接Web服务器,从而避免被服务端检测。本专利技术提出的基于连接代理优化管理的多线程网络爬虫处理方法,主要使用了多个连接代理,并提出有效的代理管理策略和参数设置方案,在多线程爬虫的基础上应用多代理进行数据爬取。其首先获取网络上公开代理服务器,测试代理服务器的网络连接性能,并根据代理服务器性能得到最优的线程数量;然后对代理服务器池进行管理,并为每一个Http请求设置一个有效代理服务器,最终执行Web页面访问请求。其中:根据代理池中的代理服务器性能确定线程数量M,采用的计算公式如下:其中,为代理服务器的失败率,v为爬取速度,为代理池中代理服务器的响应时间期望值;对代理服务器池进行管理,并为每一个Http请求设置一个有效代理服务器时,把代理服务器的失败率和响应时间作为鉴别一个代理是否有效的标准;隔段时间以后,再次尝试使用之前被判断为不能使用的代理,从而把无效的代理服务器池中可用的代理放入有效的代理服务器池中;代理任务分配时,为每个线程获取有效的代理服务器池中使用次数最少的代理,以均衡地把任务分配给每一个代理。本专利技术中,采用最小使用次数优先队列实现代理任务分配。用链表来存储代理,并记录在时间窗口内代理的使用次数。按照代理的使用次数由小到大的顺序,对链表进行排序。插入代理时,使用插入排序方法,从链表表尾的位置开始比较代理的使用次数,当在链表中找到使用次数不大于该代理的代理时,插入其后。需要提供代理使用时,获取链表表头位置的代理,并删除此代理。本专利技术中,根据代理服务器响应时间,计算出爬虫的平均反应时间期望值,计算公式如下:其中,为第i个代理服务器的响应时间,N为代理服务器个数。本专利技术中,根据代理服务器状态队列、代理服务器在时间窗口W内的失败次数,计算出失败率;计算公式如下:其中,failedTimes为连接执行期间代理服务器的失败次数,usedTimes为代理服务器的使用次数。本专利技术的有益效果在于:(1)多线程的数目是基于所使用的代理服务器性能和数目得到。通过动态地计算线程数目与代理服务器参数的关系,使任何可用的代理服务器都能适应本专利技术提出的网络爬虫,不会因为代理服务器的不稳定性影响爬虫的正常使用。而且,通过计算得到线程数目,能有效地使资源得到最大的利用又不造成资源的浪费。(2)提出了灵活的管理代理服务器方法,针对不同的访问网站,可以选择使用对该网站有效的代理服务器进行访问。(3)提出代理服务器选择方法,使每个代理服务器的使用时间间隔最长。爬虫为每一个Http请求分配一个代理服务器进行访问,均衡每个可用代理服务器的使用次数,有效地避免频繁访问被服务器端检测出来。附图说明图1是本专利技术流程图。图2是本专利技术中Proxy状态队列的一个示意图。具体实施方式下面结合附图和实施例对本专利技术进一步详细说明。图1是本专利技术流程的进一步说明。图中,虚框A内的流程是建立爬虫所需要做的初始工作,只需要执行一次。虚框B内的流程是爬虫爬取Web页面的过程,需重复执行,直到结束。(1)获取代理服务器,存入代理服务器池。(2)测试代理服务器的网络连接性能。(3)根据代理服务器性能创建一定数量的多线程。(4)把爬虫开始的爬取目标地址转化成一个Http请求,并从代理服务器池中获取一个有效的代理服务器,设置Http请求通过该代理服务器执行。(5)把Http请求加入一个Http请求队列里。(6)处于空闲状态的线程从队列Http请求队列里获取Http请求任务。(7)线程执行其获取的Http请求。执行过程中,如果遇到新的请求目标地址,则如步骤(4)的方法,创建新的Http请求,加入Http请求队列里。(8)Http请求执行完成后,得到Http响应信息,并将Web页面信息存储在本地。(9)线程回到空闲状态。(10)重复步骤(6)到步骤(9),直到所有的线程都空闲并且Http请求队列里没有请求任务。本专利技术中,基于连接代理优化管理的多线程网络爬虫框架设计主要分为三个模块:Http请求模块、代理服务器模块和爬取模块。Http请求模块根据Http请求生成一个待执行的Http请求,并放入Http请求队列中,同时到代理服务器模块中获取一个有效的代理,设置使用该代理执行这个Http请求。其中,代理服务器模块进行代理服务器的管理,为需要使用代理的模块提供有效的代理。Http请求队列中的请求任务,由爬取模块来执行。爬取模块创建M个并行线程分别去Http请求队列中拿任务来执行,执行期间若产生了新的Http请求,则继续添加到Http请求队列中。1)代理服务器模块1.1)获取代理服务器在数据库中建立代理服务器池,把Http代理服务器添加到代理服务器池中,以供使用。可以在互联网上提供代理服务器的网站站点中找到可用的代理服务器。具体的列表可以通过人工方式或另外的小爬虫自动获取。代理服务器的获取可以在互本文档来自技高网
...
一种基于连接代理优化管理的多线程网络爬虫处理方法

【技术保护点】
1.一种基于连接代理优化管理的多线程网络爬虫处理方法,其特征在于具体步骤为,首先获取网络上公开代理服务器,测试代理服务器的网络连接性能,并根据代理服务器性能得到最优的线程数量;然后对代理服务器池进行管理,并为每一个 Http 请求设置一个有效代理服务器;最终执行Web页面访问请求;其中:线程数量M根据代理服务器池中的代理服务器性能确定,其计算公式如下:这里,为代理服务器的失败率,v 为爬取速度,为代理服务器池中代理服务器的响应时间期望值;对代理服务器池进行管理,并为每一个 Http 请求设置一个有效代理服务器时,把代理服务器的失败率和 响应时间作为鉴别一个代理是否有效的标准;隔段时间以后,再次尝试使用之前被判断为不能使用的代理,从而把 无效的代理服务器池中可用的代理放入有效的代理服务器池中;代理任务分配时,为每个线程获取有效的代理服务器池中使用次数最少的代理,以均衡地把任务分配给每一个代理。

【技术特征摘要】
1.一种基于连接代理优化管理的多线程网络爬虫处理方法,其特征在于具体步骤为,首先获取网络上公开代理服务器,测试代理服务器的网络连接性能,并根据代理服务器性能得到最优的线程数量;然后对代理服务器池进行管理,并为每一个Http请求设置一个有效代理服务器;最终执行Web页面访问请求;其中:线程数量M根据代理服务器池中的代理服务器性能确定,其计算公式如下:这里,为代理服务器的失败率,v为爬取速度,为代理服务器池中代理服务器的响应时间期望值;对代理服务器池进行管理,并为每一个Http请求设置一个有效代理服务器时,把代理服务器的失败率和响应时间作为鉴别一个代理是否有效的标准;隔段时间以后,再次尝试使用之前被判断为不能使用的代理,从而把无效的代理服务器池中可用的代理放入有效的代理服务器池中;代理任务分配时,为每个线程获取有效的代理服务器池中使用次数最少的代理,以均衡地把任务分配给每一个代理;其中:无效代理如下定义:计算在最近使用的一个时间窗口W内,当同时满足以下条件i和ii或者条件i和iii时,则此代理被视为无效;i.usedTimes>Min_Used_Times;ii.failedRate>Failure_Rat...

【专利技术属性】
技术研发人员:罗邦慧曾剑平
申请(专利权)人:复旦大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1