您的位置:首页 > 其它

Scrapy爬虫框架之使用第三方库fake_useragent实现随机请求头

2018-01-30 22:48 961 查看

本篇记录使用fake_useragent这个第三方库,来实现随机请求头的设置

没有该库的朋友可以安装一下:

pip install fake_useragent


本篇设置的随机请求头可应用于各个爬虫项目

1.首先在middlewares里自定义随机请求头的类

#仿照scrapy内置的UserAgentMiddleware,来自定义设置user-agent的中间件。
class RandomUserAgentMiddleWare(object):
def __init__(self, crawler):
super(RandomUserAgentMiddleWare, self).__init__()
self.ua = UserAgent()
# 从配置文件settings中读取RANDOM_UA_TYPE值,如果配置不存在,则采用默认的random进行随机。
self.ua_type = crawler.settings.get('RANDOM_UA_TYPE', 'random')
# 注意:from_crawler函数名以及参数必须和内置的保持一致
@classmethod
def from_crawler(cls, crawler):
# 在scrapy内置请求头中间件中,该方法的作用是返回了当前类的对象
return cls(crawler)
def process_request(self, request, spider):
# 该方法是处理请求头的核心方法,在该方法内部指定请求头的User_Agent值。
# request.headers.setdefault(b"User-Agent", random.choice(self.user_agent_list))
def get_user_agent():
# 返回的就是最终的User-Agent,类似于对象.属性
return getattr(self.ua, self.ua_type)
request.headers.setdefault(b"User-Agent", get_user_agent())


2.settings里的相关配置

BOT_NAME = 'DownloadMiddleware'
SPIDER_MODULES = ['DownloadMiddleware.spiders']
NEWSPIDER_MODULE = 'DownloadMiddleware.spiders'
RANDOM_UA_TYPE = 'chrome'
ROBOTSTXT_OBEY = False
DOWNLOADER_MIDDLEWARES = {
'DownloadMiddleware.middlewares.RandomUserAgentMiddleWare': 410,
# 禁用scrapy默认启动的UserAgentMiddleWare(官方文档要求)
'scrapy.downloadmiddlewares.useragent.UserAgentMiddleware': None,
}


注:错误之处,还望指正!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐