scarpy使用fake-useragent配置动态UA

scarpy通过动态的user-agent可以避免被网站封禁,这篇文章主要讲解如何在scarpy中配置动态的UA

1.安装fake_useragent

直接进入cmd
pip install fake_useragent

在这里插入图片描述
我这里显示已经安装好了

2.在middleware中添加随机UA的中间件

首先导入我们需要的包

from fake_useragent import UserAgent

然后定义这个类 我已经写好了 直接上代码

#定义随机UA的类
class RandomUserAgentMiddleware(object):
 	
 	#这里我们需要采用继承的方式
    def __init__(self,crawler):
        super(RandomUserAgentMiddleware,self).__init__()
        #首先生成self.ua
        self.ua =  UserAgent()
        #由于ua有不同的类型,包括IE,chrome,firefox等等所以我们定义一下ua_type
        self.ua_type = crawler.settings.get("RANDOM_UA_TYPE","random")
		#这里之所以我们可以在settings中设置RANDOM_UA_TYPE = XXX ,XXX为我们需要的浏览器UA

    @classmethod
    def from_crawler(cls,crawler):
        return cls(crawler)

    def process_request(self,request,spider):
    	#这里我们应用了动态语言的比较好用的一点即方法里可以定义方法我们采用getattr的方法获取了ua.ua_type
        def get_ua():
            return getattr(self.ua,self.ua_type)
			
		#这里注释掉是方便调试用
        #random_agent = get_ua()
        #print(random_agent)

		#最后把headers全部设置为随机的就OK了
        request.headers.setdefault("User-Agent",get_ua())

3.在setting中激活中间件和ua_type

DOWNLOADER_MIDDLEWARES = {
	#这里是把我们的随机UA启用
   'igandan_crawl.middlewares.RandomUserAgentMiddleware': 543,
   
	#这里我们需要禁用掉默认的scarpy的UA,scrapy默认的UA就是'scrapy'容易被判断为爬虫并且被禁用所以需要设置为NONE即禁用
   'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None
}
RANDOM_UA_TYPE = 'Chrome' #这里可以随机设置 ie/firefox/chrome等等

好啦这些全部设置好就算完成了随机UA的设置了我们看一下结果
scarpy使用fake-useragent配置动态UA_第1张图片
看出打印的结果全是我们设置的Chrome的UA啦 当然也可以设置为random就是所有浏览器的random ua了。

你可能感兴趣的:(scarpy使用fake-useragent配置动态UA)