scrapy头部修改的方法详解


Posted in Python onDecember 06, 2020

被Scrapy自动添加的头部

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

Scrapy会通过配置文件中的USER_AGENT配置,自动为头部添加User-Agent,这条配置会被任何包含User-Agent的配置覆盖

scrapy头部修改的方法详解

当请求经过下载器后,会被自动添加头部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 XXXDownloaderMiddleware
  def process_request(self, request, spider):
	  request.headers["key"] = value
    return 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头部修改的文章就介绍到这了,更多相关scrapy头部修改内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中一些自然语言工具的使用的入门教程
Apr 13 Python
Python实现队列的方法
May 26 Python
python获取元素在数组中索引号的方法
Jul 15 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
python画一个玫瑰和一个爱心
Aug 18 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
python 字典item与iteritems的区别详解
Apr 25 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
Python远程linux执行命令实现
Nov 11 Python
Python实现老照片修复之上色小技巧
Oct 16 Python
python os.rename实例用法详解
Dec 06 #Python
python 解决函数返回return的问题
Dec 05 #Python
在Python中实现字典反转案例
Dec 05 #Python
解决python3输入的坑——input()
Dec 05 #Python
python3 使用ssh隧道连接mysql的操作
Dec 05 #Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 #Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 #Python
You might like
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
用javascript控制iframe滚动的代码
2007/04/10 Javascript
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
python离线安装外部依赖包的实现
2020/02/13 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
html5唤起app的方法
2017/11/30 HTML / CSS
会计自我鉴定
2013/11/02 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
公司表扬稿范文
2015/05/05 职场文书
学习党史心得体会2016
2016/01/23 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书