文章目录

  • 被Scrapy自动添加的头部
  • 配置settings.py文件中默认的头部
  • 在Request中设置头部
  • 在中间件中配置
  • referer中间件
  • 优先级分析

被Scrapy自动添加的头部

在没有任何配置的情况下,scrapy会对请求默认加上一些头部信息

  • Scrapy会通过配置文件中的USER_AGENT配置,自动为头部添加User-Agent,这条配置会被任何包含User-Agent的配置覆盖
  • 当请求经过下载器后,会被自动添加头部Accept-Encoding: gzip,deflate, 会被任意包含Accept-Encoding的头部配置覆盖

配置settings.py文件中默认的头部

#DEFAULT_REQUEST_HEADERS = {#  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#  'Accept-Language': 'en'
#}

当这个配置属于注释状态时,头部被设置为Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,可以通过取消注释修改或增删其中的内容

  • 优先级

    • 会被Request和中间件中的头部配置覆盖
    • 可以覆盖scrapy自动添加的User-Agent和Accept-Encoding
  • 可以在爬虫中通过custom_settings设置配置仅在当前爬虫生效

    class XXXSpider(scrapy.Spider):...custom_settings = {DEFAULT_REQUEST_HEADERS = {...}}....
    

在Request中设置头部

当给引擎返回Request时,可以为他配置头部

...
def parse(self):headers = {...}yield scrapy.Request(url, headers=headers)
  • 优先级

    • Request中设置的header会和settings.py文件中的默认头部合并到一起,如果有重复的配置,那么会覆盖那条配置
    • 会被中间件中的配置覆盖

在中间件中配置

当Request请求通过下载中间件发往下载器时,可以通过下载中间件配置头部

class XXXDownloaderMiddlewaredef process_request(self, request, spider):request.headers["key"] = valuereturn None

还需要在配置文件中启用下载中间价

DOWNLOADER_MIDDLEWARES = {'project.middlewares.XXXDownloaderMiddleware': 543,
}
  • 优先级

    • 会覆盖除了Referer以外的所有头部配置

referer中间件

当存在多次请求时,referer中间件会自动帮Request的头部中的referer加上上一次请求的url

  • 优先级

    • 最高,会在所有头部配置完之后,添加referer
    • 除了只请求一次没有referer的情况,就算在其他头部配置中设置了referer也会被referer中间件覆盖
  • 关闭referer中间件

    在配置文件中添加REFERER_ENABLED=False即可关闭

优先级分析

Scrapy自动添加的User-Agent与Accept-Encoding < 配置文件中的默认配置DEFAULT_REQUEST_HEADERS < Request中修改的header < 中间件中添加的header < referer中间件添加的referer

此篇文章仅表示自己对scrapy的理解,如有错误欢迎指正

scrapy头部修改详解相关推荐

  1. 4-4:TCP协议之TCP头部格式详解

    文章目录 一:TCP头部格式详解 (1)4位首部长度 (2)序列号和确认应答号 A:可靠性问题 B:32位序号和确认号 (3)窗口大小 (4)标志位 (5)紧急指针 A:带外数据(out_of _ba ...

  2. linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...

    在linux中更改所属用户组是使用chgrp,更改文件拥有者, chown,更改9个属性, chmod这三种常用的问题,在linxu中这三个命令就是对文件目录权限的控制命令了,下面我来介绍它们的用法与 ...

  3. IPv4头部结构详解

    IPv4头部结构详解 以下为书中原文摘录:

  4. PPC注册表修改详解集合

    PPC注册表修改详解集合 没事情做,发个帖子..转发的,不知道原作者是谁了,向他(们)致敬 手机 手机社区 手机论坛 手机游戏 主题 电子书 主题 软件 电子书 铃声 图片 手机证书 刷机 技术测评 ...

  5. Java数据结构与算法-SingleLinkedList单向链表插入,删除,查找,修改详解及代码

    SingleLinkedList单向链表插入,删除,查找,修改详解及代码 单向链表学习目标 1. 链表的介绍 2. 单向链表的存储特点以及原理 3. 基本操作:插入,删除等 4. 单向链表应用场景举例 ...

  6. 爬虫 - Scrapy框架超详解(一)

    文章目录 一.Scrapy框架原理 1.Scrapy特点 2.Scrapy安装 3.Scrapy架构图 4.Scrapy五大组件 5.Scrapy工作流程 二.Scrapy创建项目 三.Scrapy配 ...

  7. TCP固定头部结构详解

    1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 使用TCP协议通信的双方必须先建立连接,然后才能开始数 ...

  8. Scrapy之Selector详解

    目录 一.简介 二.xpath 三.获取值 四.css选择 五.xpath扩展 一.简介 前面介绍了scrapy命令和Scrapy处理流程与重要组件 这里介绍一下Scrapy的Selector,Scr ...

  9. http-head头部信息详解

    Trailer 上面那个就是一个常见的header头部信息(分 request(请求)与resonse()响应两部分),作为一个运维人员可以通过header头部信息获取很多关于网站的信息,下面来逐个介 ...

最新文章

  1. python opencv 中bmp转raw格式图片并展示
  2. Struct 和 Class 性能有差异吗?自己测试
  3. python中if错误-python中的异常处理
  4. 深入浅出NIO之Channel、Buffer
  5. Linux实用快捷键
  6. 被3整除的子序列(简单dp)
  7. android ListView 刷新卡顿问题
  8. 电脑桌面点任何文件都打开计算机,桌面上的文件全部都打不开
  9. 工具丨超好用的免费AWR分析工具
  10. Dubbo-Admin-0.2.0服务管理中心安装
  11. 程序员恶搞图片===爆笑中......娱乐一下.....
  12. ELK logstash基本配置
  13. 关于 Mac 激活锁
  14. 系统架构师必须掌握的英语单词
  15. 荣誉背后的故事:达内到底有多强?
  16. PaddlePaddle深度学习--线性回归
  17. js取绝对值的两种方法
  18. python 绘制三国演义人物关系图
  19. 手机照片局部放大镜_怎样发照片才能惊艳朋友圈?
  20. 汇编-栈帧-寄存器esp, ebp

热门文章

  1. 数学建模论文格式(简洁易懂版,针对新手)
  2. adobe reader java_使用Adobe Reader控件结合Java实现PDF打印功能
  3. android终止一个进程的方法,使用ActivityManager的forceStopPackage方法结束进程
  4. 试用与非门和异或门设计一个组合逻辑电路来判断输入的四位二进制数能否被5整除(0可被5整除), 若可被整除则输出F=1, 否则F=0(山东大学二〇二〇年数字电路906综合题第4题)(全网第一手资料)
  5. 从ST官网获取标准外设库以及官方例程
  6. gddr6速率_显卡GDDR6显存基础知识:显存GDDR6和GDDR5区别对比科普篇
  7. mac下导出chrome插件及安装
  8. python什么意思d_python里d是什么意思
  9. 关于彻底获得管理员权限的方法。(解决PYTHON PS 等报错问题)
  10. java 连接远程桌面_Java实现远程桌面(参赛作品)