下载器中间件如下列表

['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',

'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',

'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',

'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',

'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',

'scrapy.downloadermiddlewares.retry.RetryMiddleware',

'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',

'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',

'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',

'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',

'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',

'scrapy.downloadermiddlewares.stats.DownloaderStats']

下载器中间件的四个函数

from_crawler(cls,crawler) 配置函数

process_reuquest  处理请求

process_response 处理响应

process_exception 异常出现时触发

随机切换user_agent

from faker import Faker
class MySpiderMiddleware(object):
def __init__(self):
self.fake = Faker() def process_request(self,request,spider):
request.headers.setdefault('User-Agent',self.fake.user_agent())
DOWNLOADER_MIDDLEWARES = {
#'middle.middlewares.MyCustomDownloaderMiddleware': 543,
'middle.middlewares.MySpiderMiddleware': 100,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
} 第一种方式 在setting 配置里面配置,我也没测试过,到底是一直是随机取其中一个还是每次请求都随机一个
USER_AGENT_LIST=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
USER_AGENT = random.choice(USER_AGENT_LIST)

  

第二种方式 写一个自己的randomUseragent中间件 并且在setting里面启用 ,但是要修改顺序靠前,比如100 或者直接把默认启用的user_agent 设置为None

第三种方式 直接继承默认的userAgent中间件,然后改写方法

中间件可以用faker来实现  或者自己招个列表也可以

def process_request(self,request,spider):
request.headers.setdefault('User-Agent',self.fake.user_agent())

最新文章

  1. C# 云端-让http自动跳转到https链接
  2. centos7 安装lnmp环境
  3. bootstrap-提示标签、提示框
  4. 04JavaIO详解_DataInputStream(属于过滤l流)
  5. Usermod 命令详解 ------工作中修改shell时用 usermod -s /bin/csh home
  6. js实现快速排序(in-place)简述
  7. BZOJ1172 : [Balkan2007]Dream
  8. static与C#中的static
  9. 使用PDO连接多种数据库
  10. HW4.18
  11. LPCTSTR
  12. linux安装Eclipse c++环境
  13. shell编程其实真的很简单(二)
  14. Linux下栈溢出导致的core dump
  15. JavaScript基础知识(正则表达式、字符串)
  16. JDBC获取数据库连接
  17. alfred3配置
  18. Codeforces 1017F The Neutral Zone (看题解)
  19. Python 黏包及黏包解决方案
  20. spring注解方式 idea报could not autowire

热门文章

  1. mysql时间和本地时间相差13个小时的问题
  2. jenkins服务器使用python脚本rabbitmqadmin和shell对目标服务器进行管理
  3. C# Selenium操作指南,关闭黑色CMD窗口/禁用图片/隐藏浏览器等
  4. 使用VEGAS2(Versatile Gene-based Association Study)进行gene based的关联分析研究
  5. OpenShift 4.2 Service Mesh
  6. go 单元测试框架介绍
  7. windows mysql手动添加my.ini 服务启动不了
  8. vs2015下C4819该文件包含不能在当前代码页(936)中表示的字符问题解决
  9. linux 把nginx加入到系统服务的方法
  10. JS中,JSON 和 对象互转,数组和字符串的转换?