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就會一直有問題,什么主機失去響應啊什么的

本文由【z】發布於開源中國,原文鏈接:https://my.oschina.net/zhu97/blog/1925812

 

 


免責聲明!

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



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