scrapy中的useragent與代理ip
方法一:
user-agent我們可以直接在settings.py中更改,如下圖,這樣修改比較簡單,但是并不推薦,更推薦的方法是修改使用scrapy的中間件middlewares.py

推薦方案:
scrapy的中間件可以支持我們在對爬蟲的請求進行定制化修改,例如我們為了躲避掉一些反爬蟲措施,需要使用隨機的useragent以及代理ip,
user-agent中間件的撰寫:
在middlewares.py檔案中撰寫一個useragent中間件類
class UserAgentDownloadMiddlerware(object): # 所有的request請求在交給下載器之前,都會經過這個方法 def process_request(self,request,spider): import random user_agent_list=[ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36", "Dalvik/1.6.0 (Linux; U; Android 4.2.1; 2013022 MIUI/JHACNBL30.0)", "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; HUAWEI MT7-TL00 Build/HuaweiMT7-TL00) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", "AndroidDownloadManager", "Apache-HttpClient/UNAVAILABLE (java 1.4)", "Dalvik/1.6.0 (Linux; U; Android 4.3; SM-N7508V Build/JLS36C)", "Android50-AndroidPhone-8000-76-0-Statistics-wifi", "Dalvik/1.6.0 (Linux; U; Android 4.4.4; MI 3 MIUI/V7.2.1.0.KXCCNDA)", "Dalvik/1.6.0 (Linux; U; Android 4.4.2; Lenovo A3800-d Build/LenovoA3800-d)", "Lite 1.0 ( http://litesuits.com )", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0", "Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HTC T528t Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (2.0.4)", ] random_ua = random.choice(user_agent_list) request.headers['User-Agent'] = random_ua
然后在settings.py檔案中開啟下載器中間件并修改為自己的中間件
DOWNLOADER_MIDDLEWARES = { 'cnblog_dangdang.middlewares.UserAgentDownloadMiddlerware': 543, }
如圖:

進行測驗,看看是否為隨機的useragent,測驗結果如下:

可以看出我們的隨機useragent已經成功,
代理ip中間件的撰寫:
與useragent中間件相似,代理ip中間件的使用也是先撰寫自己的ip中間件然后去settings.py中撰寫使用
在middlewares.py檔案中撰寫一個proxy中間件類
class ProxyDownloadMiddlerware(object): # 所有的request請求在交給下載器之前,都會經過這個方法 def process_request(self,request,spider): import random ip_list = [ "http://27.220.52.237:43289","http://119.176.199.90:9999", ] random_ip = random.choice(ip_list) request.meta['proxy'] = random_ip
然后在settings.py檔案中開啟下載器中間件并修改為自己的中間件
DOWNLOADER_MIDDLEWARES = { 'cnblog_dangdang.middlewares.UserAgentDownloadMiddlerware': 543, 'cnblog_dangdang.middlewares.ProxyDownloadMiddlerware': 543, }

進行測驗,看看是否為隨機的代理ip,測驗結果如下:

可以看出來我們的中間件已經都起作用了每次都會換新的隨機useragent與代理ip,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188622.html
標籤:Python
上一篇:Web框架
