本文直接讲两种方法添加随机UserAgent,具体Scrapy不在阐述
首先如下图的框架,我们需要清楚User-Agent的伪装是在发送请求的Headers中,DOWNLOADER_MIDDLEWARES就是桥梁,发送请求之前的位置可以进行处理request请求,也就是在这里进行userAgent的添加!
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TWU1ENJR0Ywp1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwgTM5QzMxIjM0ITMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
需要在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