Scrapy settings - littleboy12580/learning_python GitHub Wiki
介绍
Scrapy设定(settings)提供了定制Scrapy组件的方法。您可以控制包括核心(core),插件(extension),pipeline及spider组件。
使用
当使用Scrapy时,需要声明所使用的设定;这可以通过使用环境变量: SCRAPY_SETTINGS_MODULE 来完成。SCRAPY_SETTINGS_MODULE 必须以Python路径语法编写, 如 myproject.settings 。 注意,设定模块应该在 Python import search path 中;设定可以通过多种方式设置,每个方式具有不同的优先级。 下面以优先级降序的方式给出方式列表:
- 命令行选项(Command line Options)(最高优先级)
- 每个spider的设定
- 项目设定模块(Project settings module)
- 命令默认设定模块(Default settings per-command)
- 全局默认设定(Default global settings) (最低优先级)
设定可以通过Crawler的 scrapy.crawler.Crawler.settings 属性进行访问。其由插件及中间件的 from_crawler 方法所传入,示例如下:
class MyExtension(object):
@classmethod
def from_crawler(cls, crawler):
settings = crawler.settings
if settings['LOG_ENABLED']:
print "log is enabled!"
另外设定也可以以字典方式进行访问
一些内置的设定
- AWS_ACCESS_KEY_ID
连接 Amazon Web services 的AWS access key;S3 feed storage backend 中使用,默认为None - AWS_SECRET_ACCESS_KEY
连接 Amazon Web services 的AWS secret key。 S3 feed storage backend 中使用,默认为None - BOT_NAME
Scrapy项目实现的bot的名字(也为项目名称)。 这将用来构造默认 User-Agent,同时也用来log。当使用 startproject 命令创建项目时其也被自动赋值 - CONCURRENT_ITEMS
Item Processor(即 Item Pipeline) 同时处理(每个response的)item的最大值,默认为100 - CONCURRENT_REQUESTS
Scrapy downloader 并发请求(concurrent requests)的最大值,默认为16 - CONCURRENT_REQUESTS_PER_DOMAIN
对单个网站进行并发请求的最大值,默认为8 - CONCURRENT_REQUESTS_PER_IP
对单个IP进行并发请求的最大值。如果非0,则忽略 CONCURRENT_REQUESTS_PER_DOMAIN 设定, 使用该设定。 也就是说,并发限制将针对IP,而不是网站。该设定也影响 DOWNLOAD_DELAY: 如果 CONCURRENT_REQUESTS_PER_IP 非0,下载延迟应用在IP而不是网站上 - DEPTH_LIMIT
爬取网站最大允许的深度(depth)值。如果为0,则没有限制;默认为0 - DEPTH_PRIORITY
整数值。用于根据深度调整request优先级。如果为0,则不根据深度进行优先级调整;默认为0 - DEPTH_STATS
是否收集最大深度数据,默认为True - DEPTH_STATS_VERBOSE
是否收集详细的深度数据。如果启用,每个深度的请求数将会被收集在数据中;默认为False - EXTENSIONS
保存项目中启用的插件及其顺序的字典;默认为{} - ITEM_PIPELINES
保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意。 不过值(value)习惯设定在0-1000范围内;默认为{} - LOG_ENABLED
是否启用logging;默认为True - LOG_ENCODING
logging使用的编码;默认为'utf-8' - LOG_FILE
logging输出的文件名。如果为None,则使用标准错误输出(standard error);默认为None
详细设置列表
可见http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html