第一步 :
pip install fake-useragent
第二步:
在scrapy 中的mimiddlewares.py 中
from fake_useragent import UserAgent
ua = UserAgent()
class RandomChangeUserAgentMiddleware(object): def __init__(self,crawler): super(RandomChangeUserAgentMiddleware,self).__init__() self.ua = UserAgent() self.ua_type = crawler.settings.get("RANDOM_UA_TYPE","random") # 此时应该在settings中有一个RANDOM_UA_TYPE 给个默认值 @classmethod def from_crawler(cls, crawler): return cls(crawler) def process_request(self,request, spider): 闭包 def get_ua(): """此处getattr方法是获取UserAgent中的random属性 因为在UserAgent 中有这个random方法,可以查看 fake-useragent 的GitHub ua.ie ua.msie ua.opera ua.chrome ua.google ua.firefox ua.ff ua.safari ua.random 在setting中随意指定 getattr(self.ua,self.ua_type) 会获取ua_type对应的值,而不是返回true或false """ return getattr(self.ua, self.ua_type) cont = get_ua() request.headers.setdefault("User-Agent", get_ua())
第三步:
在settings中注册这个middlewares
另外:
同理可以设置IP代理
class random_proxyMiddleware(object): def process_request(self,request, spider): request.meta['proxy'] = "https://112.248.25.98:61234"同样就是写一个类处理IP,此处如果是设置动态代理,可以自己写一个方法,导入过来就行
在settings中注册这个middlewares