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 中;设定可以通过多种方式设置,每个方式具有不同的优先级。 下面以优先级降序的方式给出方式列表:

  1. 命令行选项(Command line Options)(最高优先级)
  2. 每个spider的设定
  3. 项目设定模块(Project settings module)
  4. 命令默认设定模块(Default settings per-command)
  5. 全局默认设定(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