Scrapy 关于代理IP池的坑

在网上的哥们上抄的获取代理池,但是一直使用都报告失去响应,以为一直是代理不能用,其实是在我们的middlewares的中间件ProxyMiddleWare的问题(我的版本是python3.7,Scrapy1.5.1)贴出改后的代码

class ProxyMiddleWare(object):
    """docstring for ProxyMiddleWare"""
    def process_request(self,request, spider):
        '''对request对象加上proxy'''
        proxy = self.get_random_proxy()
        print("this is request ip:"+proxy)
        request.meta['http_proxy'] = proxy


    def process_response(self, request, response, spider):
        '''对返回的response处理'''
        # 如果返回的response状态不是200,重新生成当前request对象
        if response.status != 200:
            proxy = self.get_random_proxy()
            print("this is response ip:"+proxy)
            # 对当前reque加上代理
            request.meta['http_proxy'] = proxy
            return request
        return response

    def get_random_proxy(self):
        '''随机从文件中读取proxy'''
        path1=os.path.abspath('.')   #表示当前所处的文件夹的绝对路径
        while 1:
            with open(path1+'\\crawler\\proxies.txt', 'r') as f:
                proxies = f.readlines()
            if proxies:
                break
            else:
                time.sleep(1)
        proxy = random.choice(proxies).strip()
        return proxy

重点就在对当前的request加代理这里

request.mata一定是这个样子的

request.meta['http_proxy'] = proxy

原来是request.meta['proxy'] = proxy就会一直有问题,什么主机失去响应啊什么的

转载于:https://my.oschina.net/zhu97/blog/1925812

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值