动态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)


相关资讯

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

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

来源:黑核动态ip代理

2019-05-06 10:03:26

如何用Python爬虫代理IP快速增加博客阅读量

如何用Python爬虫代理IP快速增加博客阅读量?下面为大家整理了具体的方法,一起了了解看看吧!写在前面题目所说的并不是目的,主要是为了更详细的了解网站的反爬机

来源:黑核动态ip代理

2019-05-06 10:11:01

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

如何用代理服务器加速爬虫速率?我在爬数据的时候发现绝大多数目标网站都具有反爬虫策略,最简单的反爬虫策略包括限制单位时间内同一ip的访问次数,或同一个登陆账户的访

来源:黑核动态ip代理

2019-05-14 09:52:11

如何用爬虫代理ip抓取贴吧数据

如何用爬虫代理ip抓取贴吧数据?有时我们要批量获取数据,获取的办法有很多,你还在一页一页数据整理吗?如果要获取的网页非常多,这样一页一页操作实在是太麻烦了,有没

来源:黑核动态ip代理

2019-06-05 10:07:00

如何用python测试代理ip是否可用

网络上有很多的免费代理IP,但是有效率低的可怜,这个是为什么呢?这是因为用的人太多了,同一个IP无数人用来访问同一个网站,IP就会被封掉。那么如何用python

来源:黑核动态ip代理

2019-07-09 14:08:43

如何用换IP软件将IP修改成其他城市

换IP软件支持修改其他城市IP,这样你想怎么换IP都行了,推荐使用黑核动态IP代理这个换IP软件的,为什么呢?使用黑核动态IP代理软件能有什么优势呢?因为最近也

来源:黑核动态ip代理

2019-07-11 10:47:59

如何用在自媒体中使用代理IP

如今很多的人都在使用微博、天天快报这些各类短视频平台,因而很多企业很多人都见到了这当中的商业机会和时机,而且利用自媒体平台来转型自身的销路,也由于自媒体的迅猛发

来源:黑核动态ip代理

2019-08-05 11:21:33

国内好用又实惠的https代理ip服务器不要错过了

随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁IP的问题,通常会使用

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

2018-12-28 16:55:02

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

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

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

2018-12-25 16:58:44

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

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

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

2018-12-28 17:02:47

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

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

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

2018-12-28 15:24:23

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