本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述
首先如下圖的架構,我們需要清楚User-Agent的僞裝是在發送請求的Headers中,DOWNLOADER_MIDDLEWARES就是橋梁,發送請求之前的位置可以進行處理request請求,也就是在這裡進行userAgent的添加!
需要在middlewares.py中添加以下類和方法,具體結構如代碼所示:
1、定義RandomUserAgentMiddleware(object) 注:類名随意需要和settings.py中的一緻
2、寫一個process_request方法:
不論哪種方法都需要在settings.py中打開 DOWNLOADER_MIDDLEWARES:
方法一:
需要在settings.py中添加一個USER_AGENT_LIST的清單,如下圖:
注:清單的UserAgent,截圖我隻保留了3個請忽略!
class RandomUserAgentMiddleware(object):
# 第一種方法在Setting中手動添加Headers列别,随機選擇
def process_request(self, request, spider):
request.headers["User-Agent"] = random.choice(spider.settings.get("USER_AGENT_LIST"))
方法二:
隻需要導入fake_useragent這個useragent庫
from fake_useragent import UserAgent
class RandomUserAgentMiddleware(object):
# 第二種方法導入fake_useragent這個useragent庫可以用random函數随機選擇Headers
def process_request(self, request, spider):
request.headers["User-Agent"] = UserAgent().random