动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

如何用代理服务器加速爬虫速率

发布时间:2019-05-14 09:52:11 来源:黑核动态ip代理

分享到

  如何用代理服务器加速爬虫速率?我在爬数据的时候发现绝大多数目标网站都具有反爬虫策略,最简单的反爬虫策略包括限制单位时间内同一ip的访问次数,或同一个登陆账户的访问次数(通过cookies实现)。例如新浪微博两者都有,网易新闻限制了ip访问次数等。

如何用代理服务器加速爬虫速率

  对于新浪微博,我的策略是申请了几十个微薄帐号,在分布式框架下通过十几台计算机(独立ip)进行轮爬。没有用代理服务器的方法,是因为代理服务器大多不是本地ip,如果一个用户帐号被发现经常在不同地区登陆,会被要求进行验证码验证,而在python下添加自动验证码验证的识别率不高,所以放弃了。值得一提的时,本来goagent在美国有一个代理网段是可以用来加速的,但是我太激进,没有设置请求间隔,一晚上爬了十几万个页面,造成以后挂那个网段的代理都被要求验证码验证。

  对于网易新闻这类不严格要求登陆的网站,就可以用不同地区的公开代理服务器进行加速了,甚至国外地址都没有问题。他们自己的PM说不定还会兴高采烈地跟上层汇报产品的国际访问量大幅上升,呵呵。

  公开的代理服务器很多,而且一些黑客站点会将其公开出来,类似地有挂在Russia的:proxylist 和国内的 cn-proxy . 里面的代理地址一般保持5分钟更新。另外要注意的是,这些代理服务器不一定能够访问你的目标网站,所以最好把他们都搜集下来,维护一个列表,在启动爬虫之前用目标网站的一个页面测试一下。

  下面我把自己的测试方法给出来,ProxyData.py是反馈ip地址的,ProxyFind.py是通过多线程方法来测试代理的访问速度,如果不用多线程测试万数千个代理可能需要若干小时时间。

    #ProxyData.py    #省略了好几千个代理,大家自己去搜集列表吧
    proxies = ['117.135.250.134:80','117.135.250.133:8083','117.135.250.130:84','117.135.251.132:83','117.135.250.134:8083'] 

    def getProxies():
        temp = []        for item in proxies:
            ip, port = item.split(':')
            temp.append([ip, port])        return temp

  多线程测试,如果通过测试则inserDB():

    #ProxyFind.py    import ProxyData    class ProxyCheck(threading.Thread):    def __init__(self,proxyList):
        threading.Thread.__init__(self)
        self.proxyList = proxyList
        self.timeout = 20        #测试的是能否得到网易新闻跟帖
        self.testUrl = 'http://comment.news.163.com/api/v1/products/a2869674571f77b5a0867c3d71db5856/threads/BAHNKE3400014PRF/comments/newList?offset=0&limit=30&showLevelThreshold=72&headLimit=1&tailLimit=2&callback=getData&ibc=newspc'        #self.testStr = r'<a href="http://[\S]*\.html">'
        self.testStr = r'getData'    def checkProxy(self):
        cookies = urllib2.HTTPCookieProcessor()        for proxy in self.proxyList:
            proxyHandler = urllib2.ProxyHandler({"http" : r'http://%s:%s' %(proxy[0],proxy[1])})
            opener = urllib2.build_opener(cookies,proxyHandler)
            opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0')]
            t1 = time.time()            try:
                req = opener.open(self.testUrl, timeout=self.timeout)
                result = req.read()                #print result                #print result
                timeused = time.time() - t1
                pos = re.findall(self.testStr, result)                #print pos                if len(pos) > 0:
                    checkedProxy.append((proxy[0],proxy[1],timeused))                else:                    continue                #print len(checkedProxy)            except Exception,e:                continue    def run(self):
        self.checkProxy()   
    if __name__ == "__main__":
        rawProxyList = ProxyData.getProxies()

        getThreads = []
        checkThreads = []        print 'checking...'        for i in range(100):
            t = ProxyCheck(rawProxyList[((len(rawProxyList)+99)/100) * i:((len(rawProxyList)+99)/100) * (i+1)])
            checkThreads.append(t)        for i in range(len(checkThreads)):
            checkThreads[i].start()        for i in range(len(checkThreads)):
            checkThreads[i].join()        print '.'*10+"总共有%s个代理通过校验" %len(checkedProxy) +'.'*10

        insertDB(checkedProxy)

  得到可用的代理服务器列表之后,就是构造urllib2的opener来请求数据了,替换其中的ip和port变量:

    import urllib2    import cookielib
    proxyHandler = urllib2.ProxyHandler({"http" : r'http://%s:%s' %(ip,port)})
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), proxyHandler)
    opener.addheaders = [
        ('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'), ('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),('Host', 'comment.' + category + '.163.com'),('Accept-Encoding', 'gzip,deflate')]
    response = opener.open(target_url, timeout=20)


相关资讯

黑核混拨IP加速器让你知道如何改变ip地址

被论坛禁言了?玩游戏作弊,被封号了?被人屏蔽IP是件很让人不爽的事情,平时正忙的时候被封禁,会有种天塌下来的感觉。如何改变ip地址成了我们比做的事情,不改变IP

来源:黑核混拨ip加速器网

2018-12-25 16:58:44

黑核混拨IP加速器轻松解决怎么修改手机ip地址问题

有些视频播放站很坑,一天只能观看几个视频就需要开通会员才能看了,但是我们又不想冲会员怎么办,那就需要修改手机IP地址了,但是怎么修改手机IP地址呢?不是谁都懂的

来源:黑核混拨ip加速器网

2018-12-25 17:39:01

还在找ip地址修改器吗?来试试黑核混拨IP加速器吧

国内ip地址修改器顾名思义就是转换自己的IP地址的一个工具或者一款软件,ip地址修改用哪些工具好处呢,因为工作或者个人需求,修改IP后可以注册一些限制IP注册的

来源:黑核混拨ip加速器网

2018-12-25 18:13:13

玩英雄联盟用什么加速器好?

这年头玩个游戏都不省心啊,老是延迟,正拿着一把大刀上去砍人的时候突然延迟了,等反应过来的时候人已经回复活点了,所有的优雅走位都还没有没用上,只能看到倒地等复活的

来源:黑核混拨IP加速器网

2018-12-27 14:52:40

还在纠玩结英雄联盟用什么加速器好吗?来试试这个

你们玩游戏有没有试过延迟过千的啊?或者说延迟几百,反应总是慢半拍的?总是玩的爽的时候突然给你来卡一下,让你轻松愉快的心情瞬间不爽,游戏把不能不玩,但是玩也要玩的

来源:黑核混拨ip加速器网

2018-12-27 15:58:08

在国外想玩lol国服吗?来试试这个ip加速器吧

身在国外想玩下国服游戏是一件很痛苦的事情,因为网络延迟太高了,卡到让人怀疑人生的那种地步,有多卡呢?玩个游戏能卡出漫画的效果来,看着都着急啊。特别是玩游戏的时候

来源:黑核混拨ip加速器网

2018-12-27 17:07:17

IP加速器的使用方法和简单问题解决办法

IP加速器,顾名思义就是加速IP,提升网络性能,降低网络延迟。黑核混拨ip加速器是一款ip量大速度快的加速器,非游戏外挂,可以放心使用。IP加速器的客户端设置简

来源:黑核混拨ip加速器网

2018-12-28 10:21:44

什么是ip代理软件?可以修改ip地址吗?

经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们

来源:黑核混拨ip加速器网

2018-12-27 17:27:18

如何用php代码检查代理ip的有效性

如何用php代码检查代理ip的有效性?本文实例为大家分享了检查代理ip有效性php代码,稳定性,如错误率和查询用时,下面一起来看看要怎么做吧!/** 

来源:黑核动态ip代理

2019-05-06 10:03:26

爬虫技术工程师为什么离不开ip代理

说到爬虫,自然离不开爬虫代理地址。爬虫是一门随着互联网大数据而应运而生的产物,它主要是为了在海量的网络数据中采集分析有效的数据而诞生的一门技术。无需多言,爬虫技

来源:黑核混拨ip加速器网

2018-12-28 15:24:23

实用https代理服务器别人能查到真实地址吗

现在,高匿代理ip时代已经到来,但是,还是有很多人不了解高匿代理ip到底有什么用,虽然随着网络科技的发展,网络对我们的生活带来了很多方便,也带来了更多的选择,网

来源:黑核混拨ip加速器网

2018-12-28 17:02:47

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
客服电话
13318873961