Scrapy进阶知识点总结(五)——Settings
1.设置优先级
Scrapy中有不同层次的设置,其类型以及优先级如下(从高到低):
- 1.命令行命令中指定的设置
- 2.每个spider中的设置
- 3.scrapy项目中settings.py设置
- 4.命令行命令的默认设置
- 5.scrapy全局的默认设置
1.命令行命令中指定的设置
命令行提供的参数是最优先的参数,覆盖任何其他选项
scrapy crawl myspider -s LOG_FILE=scrapy.log
2.每个spider中的设置
spider可以定义自己的设置,这些设置优先并覆盖项目设置。他们可以通过设置custom_settings属性来实现
class MySpider(scrapy.Spider):
name = 'myspider' custom_settings = {
'SOME_SETTING': 'some value',
}
3.scrapy项目中settings.py设置
通过project.settings中修改,下面有详细的配置解释
4.命令行命令的默认设置
每个Scrapy工具命令都可以有自己的默认设置,这些设置会覆盖全局默认设置。这些自定义命令设置default_settings在命令类的属性中指定。
5.scrapy全局的默认设置
全局默认值位于scrapy.settings.default_settings 模块中
2.settings设置
BOT_NAME
此Scrapy项目名称。这将默认用于构建User-Agent,也用于日志记录。使用该startproject命令创建项目时,它会自动填充项目名称
SPIDER_MODULES
scrapy查找spider的路径
NEWSPIDER_MODULE
指定使用genspider时创建spider的路径
USER_AGENT
爬虫时使用的默认User-Agent,除非被覆盖。默认: "Scrapy/VERSION (+https://scrapy.org)"
ROBOTSTXT_OBEY
CONCURRENT_REQUESTS
DOWNLOAD_DELAY
CONCURRENT_REQUESTS_PER_DOMAIN
CONCURRENT_REQUESTS_PER_IP
COOKIES_ENABLED
TELNETCONSOLE_ENABLED
DEFAULT_REQUEST_HEADERS
SPIDER_MIDDLEWARES
DOWNLOADER_MIDDLEWARES
EXTENSIONS
ITEM_PIPELINES
AUTOTHROTTLE_ENABLED
AUTOTHROTTLE_START_DELAY
AUTOTHROTTLE_MAX_DELAY
AUTOTHROTTLE_TARGET_CONCURRENCY
AUTOTHROTTLE_DEBUG
HTTPCACHE_ENABLED
HTTPCACHE_EXPIRATION_SECS
HTTPCACHE_DIR
HTTPCACHE_IGNORE_HTTP_CODES
HTTPCACHE_STORAGE
3.访问setting
在spider中通过self.settings获取
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://example.com'] def parse(self, response):
print("Existing settings: %s" % self.settings.attributes.keys())
通过from_crawler类方法获取scrapy.crawler.Crawler.settings 中的属性
class MyExtension(object):
def __init__(self, log_is_enabled=False):
if log_is_enabled:
print("log is enabled!") @classmethod
def from_crawler(cls, crawler):
settings = crawler.settings
return cls(settings.getbool('LOG_ENABLED'))
可以在spider类、middleware类、pipeline类以及extension使用from_crawler方法
4.总结
1.settings.py中的设置是针对整个项目的,可以添加对整个spiders通用的设置
2.custom_settings是spider单独的设置,比如可以设置每个spider用不同的中间件或管道
3.命令行中的设置,最高的优先级,应用场景比如,cmd多开的时候使用不同配置去跑spider,不过一些配置可能会出问题
Scrapy进阶知识点总结(五)——Settings的更多相关文章
- Scrapy进阶知识点总结(六)——中间件详解
概述 查看scrapy官网的框架图,可以看出中间件处于几大主要组件之间,类似于生产流水线上的加工过程,将原料按照不同需求与功能加工成成品 其中4,5处于下载器与引擎之间的就是下载中间件,而spider ...
- Scrapy进阶知识点总结(四)——Item Pipeline
Item Pipeline Item Pipeline调用发生在Spider产生Item之后.当Spider解析完Response之后,Item就会传递到Item Pipeline,被定义的Item ...
- Scrapy进阶知识点总结(一)——基本命令与基本类(spider,request,response)
一.常见命令 scrapy全局命令可以在任何地方用,项目命令只能在项目路径下用 全局命令: 项目命令: startproject crawl genspider check settings list ...
- Scrapy进阶知识点总结(三)——Items与Item Loaders
一.Items 抓取的主要目标是从非结构化源(通常是网页)中提取结构化数据.Scrapy蜘蛛可以像Python一样返回提取的数据.虽然方便和熟悉,但Python缺乏结构:很容易在字段名称中输入拼写错误 ...
- Scrapy进阶知识点总结(二)——选择器Selectors
1. Selectors选择器 在抓取网页时,您需要执行的最常见任务是从HTML源提取数据.有几个库可用于实现此目的,例如: BeautifulSoup是Python程序员中非常流行的Web抓取库,它 ...
- 网页爬虫--scrapy进阶
本篇将谈一些scrapy的进阶内容,帮助大家能更熟悉这个框架. 1. 站点选取 现在的大网站基本除了pc端都会有移动端,所以需要先确定爬哪个. 比如爬新浪微博,有以下几个选择: www.weibo.c ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- scrapy爬虫学习系列五:图片的抓取和下载
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
随机推荐
- cookie和session,cookie和web storage
一.cookie和session cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式. session指的是访问者从到达某个特定页面到离开为止 ...
- Redis的几个核心机制底层原理
#### 1.S_DOWN和O_DOWN ###### S_DOWN和O_DOWN两种宕机状态 (1).S_DOWN是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机 s ...
- C语言I作业004
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业 我在这个课程的目标是 掌握使用for循环语句实现指定次数的循环程序设计 这个作业在那个具体方面帮助我实现目标 pta运用for循环语 ...
- linux系统下使用宝塔面板安装owncloud常见问题
在安装owncloud时出现 无法写入“config”目录! 解决方法 在宝塔面板,找到owncloud根目录,点击"权限“设置权限 将权限设置为777,应用到子目录打勾(如下图) 确定后再 ...
- 算法学习之剑指offer(五)
题目1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution ...
- [BZOJ29957] 楼房重建 - 线段树
2957: 楼房重建 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3294 Solved: 1554[Submit][Status][Discus ...
- openssl之aes对称加密
AES:密码学中的高级加密标准(Advanced Encryption Standard,AES),又称 Rijndael加密法. 对称加密:用同一个密码 加密/解密 文件. 使用openssl中 ...
- 20.discuz论坛-实现伪静态
部署discuz论坛 1.直接上配置文件--->>> [root@web01 conf.d]# vim discuz.cheng.com.conf server { listen 8 ...
- openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)
一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...
- 包管理-rpm
rpm包管理 程序源代码---->预处理---->编译---->汇编---->链接 数据处理 转为汇编代码 进行汇编 引入库文件 静态编译:. ...