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, }
注:错误之处,还望指正!
相关文章推荐
- Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
- [爬虫入门]Python中使用scrapy框架实现图片爬取
- Scrapy爬虫框架学习之使用start_requests函数实现用户登录
- 基于Python使用scrapy-redis框架实现分布式爬虫 注
- 使用python scrapy爬虫框架 爬取科学网自然科学基金数据
- Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
- (七十八)使用第三方框架INTULocationManager实现定位
- 使用scrapy,redis, mongodb实现的一个分布式网络爬虫
- iOS网络请求第三方框架:MKNetworkKit介绍及简单使用
- 2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职
- 基于Python,scrapy,redis的分布式爬虫实现框架
- 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
- 使用第三方框架 Masonry 实现自动布局
- 使用第三方框架 Masonry 实现自动布局
- 不使用第三方分享框架实现分享功能
- Python爬虫框架Scrapy 学习笔记 5 ------- 使用pipelines过滤敏感词
- 对第三方框架AFNetworking网络请求的使用浅析
- Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)
- 零基础写python爬虫之使用Scrapy框架编写爬虫
- 基于Python,scrapy,redis的分布式爬虫实现框架