多线程获取代理IP

为解决爬虫时单个代理接口速度慢的问题,本文采用多线程技术,通过两个代理接口同时获取IP并存入集合,再加入队列确保不重复使用。当队列为空时,程序会休眠2秒等待新代理。实现过程包括设置队列和集合,接口获取代理,创建线程,以及主函数测试。测试结果显示,5个代理在16秒内完成,速度有所提升。
摘要由CSDN通过智能技术生成

工作需要,在爬虫的时候要获取代理,但是一个代理接口获取的速度不满足需求,故用两个代理多线程进行获取,提高速度(有多的接口会更快)

原理是两个接口同时运行,把得到的代理IP放入集合中,然后加入队列中,先进先出。每次入队之前判断是否已存在于集合中(即已经使用过,如果使用过则舍弃),保证每次使用的代理都是不重复的。

 

1、首先我们设置好队列以及集合,如果队列是空的(已透支),则睡眠2秒等待插入。

ip_set = set()
que_proxy = Queue()


# 从队列获取有效代理
def useful_proxies():
    while 1:
        if not que_proxy.empty():
            return que_proxy.get()
        else:
            print("queue empty. please wait for 2 second")
            time.sleep(2)

2、接口获取代理插入队列(当然,接口自己填啦~)

# 获取代理IP
def get_proxies():
    while 1:
        text = requests.get('your proxies API').text
        try:
            ip = re.findall('(\d{2,3}.\d{2,3}.\d{2,3}.\d{2,3}:\d{4,5})', text)[0]
        except:
            ip = ''
        if ip != '':
            proxies = {
                        "http": "http://" + ip,
                        "https": "https://" + ip
                    }
            # 未出现在旧集合,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值