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 ...
随机推荐
- ES三节点重启后报错no known master node
问题 一直在研究ES的监控怎么做,想偷点懒,不去通过API获取然后计算,就想找个现成的插件或者监控软件,只要装个agent就可以,然后就找到了x-pack,插件装好了之后,需要重启ES集群,线上的ES ...
- 介绍ArcGIS中各种数据的打开方法——shp(矢量文件)
2.加载shp文件到地图控件 ShapeFile是一种矢量数据模型的计算机数据组织文件,用于在计算机上表达矢量数据的计算机文件. 加载ShapeFile文件最主要是:axMapControll控件对象 ...
- Neo4j:图数据库GraphDB(二)高级查找
接着上一篇,继续介绍图数据库Neo4j: http://www.cnblogs.com/rongyux/p/5537028.html 三 高级查找操作 1过滤 name = "Tom H ...
- TensorFlow2.0(9):TensorBoard可视化
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- python学习-列表、元组和字典(三)
学习笔记中的源码:传送门 3.1 列表和元组 3.2 不同类型变量的初始化: 数值 digital_value = 0 字符串 str_value = "" 或 str_value ...
- javascript学习总结之对象的深拷贝和浅拷贝
前言 最近在写ES6的文章的时候发现重复遇到关于javascript深拷贝和浅拷贝的问题,然后查找了一些资料,根据资料和自己的理解做了以下笔记,毕竟javascript关于深拷贝和浅拷贝的问题在一些面 ...
- .Net轻量状态机Stateless的简单应用
对于大部分系统中流程的变更,是十分正常的事情,小到一个状态的切换,大到整个系统都是围绕业务流再走,复杂点的有工作流引擎,简单点的几个if/else收工,但是往往有那种,心有余而力不足的,比简单复杂,比 ...
- 《编写可维护的JavaScript》 笔记
<编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...
- unity 之 自定义弹出框
一.弹出框的搭建: 布局如图:Message为整个父物体,并且添加UiMessage代码.panel为遮罩. MessageBox为整个提示框,Panel为标题,ok为确定按钮,cancel为取消按钮 ...
- char 、signed char、unsigned char
看如下代码: char c = -1; signed char sc = -1; unsigned char uc = -1; printf("c=%d, sc=%d, uc=%d, cx= ...