scrapy中使用 IP 代理


在 scrapy 中使用 ip 代理需要借助中間件的功能

首先在settings 中設置好中間件,中間件優先級數字越小越先被執行

'DOWNLOADER_MIDDLEWARES':{      
'spider.spider.middlewares.ProxyMiddleWare':542,
'spider.spider.middlewares.SelenuimDownloaderMiddleware':543
}

然后編寫中間件,攔截請求設置代理

class ProxyMiddleWare(object):
    
    def process_request(self, request, spider):
        
        """ 對 request 加上proxy"""
        proxy = RedisClient().pop_proxy().decode('utf-8')
        print('---------this is request ip ----------:'+ proxy)
        request.meta['proxy'] = proxy


    def process_response(self, request, response, spider):
        
        """ 對返回的 response 處理"""

        # 如果返回的 response 狀態不是 200, 重新生成當前的 request對象
        if response.status != 200:
            proxy = RedisClient().pop_proxy().decode('utf-8')
            print('this is response ip:'+ proxy)
            # 對當前 request 加上代理
            return request

        return response 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM