IP代理池调用方式

前提:代理池已将ip存入Redis数据库中了,如何提高使用代理池中的IP质量

通过一个访问脚本获得高质量访问目标网站的IP代理:

# -*- coding: utf-8 -*-
import threading,time,random
import requests
import redis
import re
from fake_useragent import UserAgent
redis = redis.Redis(host='', port='', password='',db=0)
#https://www.huishoubao.com/evInfo/20059519191?selecteds=%5B%22133%22,%22879%22,%2212%22,%2277%22,%2273%22,%2271%22,%2263%22,%229%22%5D
TEST_URL = 'https://www.huishoubao.com/evInfo/20059519191?selecteds=%5B%22174%22%2C%2212%22%2C%2242%22%2C%2237%22%2C%2217%22%2C%2283%22%2C%2277%22%2C%2273%22%2C%2271%22%2C%2263%22%5D'


def test():
    for i in range(0,1000):
        Allproxies = str(redis.zrevrange('proxies', 0, -1))
        # print(Allproxies)
        proxies = re.findall("b'(.*?)',", Allproxies)
        # print(proxies)
        print('当前排列可用IP数目:', len(proxies))
        if len(proxies) > 0:
            rr = random.randint(0,len(proxies)-1)
            proxy = proxies[rr].replace(' ', '')
            # print('当前测试ip:', proxy)
            proxies = {"http": "http://%(proxy)s/" % {'proxy': proxy},
                       "https": "http://%(proxy)s/" % {'proxy': proxy}}
            uas = UserAgent()
            ua = uas.random
            # print(ua)
            try:
                headers = {'User-Agent': ua}
                response = requests.get(url=TEST_URL, headers=headers, proxies=proxies, timeout=3)
                if response.status_code == 200:
                    print('-------------------------可用有效ip:', proxy)
                    return proxy

                else:
                    # print('清除无用代理', proxy)
                    redis.zrem('proxies', proxy)
            except Exception as gl:
                # print(gl)
                # print('清除无用代理', proxy)
                redis.zrem('proxies', proxy)


 

接着在抓取目标页面使用获取到的高质量IP代理:

# -*- coding: utf-8 -*-
from p1 import test
import requests
import threading
from fake_useragent import UserAgent
TEST_URL = 'https://www.huishoubao.com/evInfo/20059519191?selecteds=%5B%22174%22%2C%2212%22%2C%2242%22%2C%2237%22%2C%2217%22%2C%2283%22%2C%2277%22%2C%2273%22%2C%2271%22%2C%2263%22%5D'
def t_s():
    proxy = test()
    print('p2---------',proxy)
    proxies = {"http": "http://%(proxy)s/" % {'proxy': proxy},
                           "https": "http://%(proxy)s/" % {'proxy': proxy}}
    uas = UserAgent()
    ua = uas.random
    print(ua)
    try:
        headers = {'User-Agent': ua}
        response = requests.get(url=TEST_URL, headers=headers, proxies=proxies, timeout=3)
        if response.status_code == 200:
            print('success'+str(len(response.text)))
    except Exception as gl:
        print(gl)
        proxy = test()
        print('p3---------', proxy)
        proxies = {"http": "http://%(proxy)s/" % {'proxy': proxy},
                   "https": "http://%(proxy)s/" % {'proxy': proxy}}
        uas = UserAgent()
        ua = uas.random
        print(ua)
        try:
            headers = {'User-Agent': ua}
            response = requests.get(url=TEST_URL, headers=headers, proxies=proxies, timeout=3)
            if response.status_code == 200:
                print('success' + str(len(response.text)))
        except Exception as gl:
            print(gl)
            proxy = test()
            print('p3---------', proxy)
            proxies = {"http": "http://%(proxy)s/" % {'proxy': proxy},
                       "https": "http://%(proxy)s/" % {'proxy': proxy}}
            uas = UserAgent()
            ua = uas.random
            print(ua)
            try:
                headers = {'User-Agent': ua}
                response = requests.get(url=TEST_URL, headers=headers, proxies=proxies, timeout=3)
                if response.status_code == 200:
                    print('success' + str(len(response.text)))
            except Exception as gl:
                print(gl)

def threads_get():
    for i in range(10):
        t = threading.Thread(target=t_s)
        t.start()
if __name__ == '__main__':
    threads_get()

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值