Settings

Scrapy设置允许您自定义所有Scrapy组件的行为,包括核心,扩展,管道和蜘蛛本身.

设置的基础结构提供了键-值映射的全局命名空间,代码可使用该命名空间从中获取配置值. 可以通过不同的机制填充设置,如下所述.

设置也是选择当前活动的Scrapy项目的机制(如果您有很多的话).

有关可用内置设置的列表,请参阅: 内置设置参考 .

Designating the settings

When you use Scrapy, you have to tell it which settings you’re using. You can do this by using an environment variable, SCRAPY_SETTINGS_MODULE.

SCRAPY_SETTINGS_MODULE的值应采用Python路径语法,例如myproject.settings . 请注意,设置模块应位于Python 导入搜索路径上 .

Populating the settings

可以使用不同的机制填充设置,每种机制具有不同的优先级. 以下是按优先级从高到低排列的列表:

  1. 命令行选项(最高优先级)
  2. 每个蜘蛛的设置
  3. 项目设置模块
  4. 每个命令的默认设置
  5. 默认全局设置(优先级较低)

这些设置源的填充由内部负责,但是可以使用API​​调用进行手动处理. 请参阅Settings API主题以供参考.

这些机制将在下面更详细地描述.

1. Command line options

命令行提供的参数是优先级最高的参数,它会覆盖所有其他选项. 您可以使用-s (或--set )命令行选项显式覆盖一个(或多个)设置.

Example:

scrapy crawl myspider -s LOG_FILE=scrapy.log

2. Settings per-spider

蜘蛛程序(请参阅" 蜘蛛程序"一章以供参考)可以定义自己的设置,这些设置将优先执行并覆盖项目的设置. 他们可以通过设置custom_settings属性来实现:

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'SOME_SETTING': 'some value',
    }

3. Project settings module

项目设置模块是Scrapy项目的标准配置文件,将在其中填充大多数自定义设置. 对于标准的Scrapy项目,这意味着您将在为项目创建的settings.py文件中添加或更改设置.

4. Default settings per-command

每个Scrapy工具命令可以具有自己的默认设置,这些默认设置将覆盖全局默认设置. 这些自定义命令设置在命令类的default_settings属性中指定.

5. Default global settings

全局默认值位于scrapy.settings.default_settings模块中,并在" 内置设置参考"部分中进行了说明.

How to access settings

在蜘蛛中,可以通过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())

Note

初始化Spider之后,将在基本Spider类中settings属性. 如果要在初始化之前使用设置(例如,在Spider的__init__()方法中),则需要覆盖from_crawler()方法.

可以通过在扩展程序,中间件和项目管道中传递给from_crawler方法的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'))

可以像dict一样使用settings对象(例如, settings['LOG_ENABLED'] ),但通常首选使用Settings API提供的方法之一以所需的格式提取设置以避免类型错误.

Rationale for setting names

设置名称通常以它们配置的组件为前缀. 例如,虚构的robots.txt扩展名的正确设置名称将为ROBOTSTXT_ENABLEDROBOTSTXT_OBEYROBOTSTXT_CACHEDIR等.

Built-in settings reference

这是所有可用的Scrapy设置的列表,按字母顺序排列,以及它们的默认值和它们应用的范围.

范围(如果有)显示了设置的使用位置(如果它与任何特定组件相关联). 在那种情况下,将显示该组件的模块,通常是扩展,中间件或管道. 这也意味着必须启用该组件才能使设置生效.

AWS_ACCESS_KEY_ID

Default: None

需要访问Amazon Web服务 (例如S3 feed存储后端)的代码使用的AWS访问密钥.

AWS_SECRET_ACCESS_KEY

Default: None

需要访问Amazon Web服务 (例如S3 feed后端)的代码所使用的AWS秘密密钥.

AWS_ENDPOINT_URL

Default: None

用于类似S3的存储的端点URL,例如Minio或s3.scality. 仅支持botocore库.

AWS_USE_SSL

Default: None

如果要禁用SSL连接以与S3或类似S3的存储进行通信,请使用此选项. 默认情况下,将使用SSL. 仅支持botocore库.

AWS_VERIFY

Default: None

验证Scrapy与S3或类似S3的存储之间的SSL连接. 默认情况下,将进行SSL验证. 仅支持botocore库.

AWS_REGION_NAME

Default: None

与AWS客户端关联的区域的名称. 仅支持botocore库.

BOT_NAME

Default: 'scrapybot'

此Scrapy项目实现的机器人的名称(也称为项目名称). 此名称也将用于日志记录.

使用startproject命令创建项目时,会自动使用项目名称填充该名称.

CONCURRENT_ITEMS

Default: 100

在"项目处理器"(也称为" 项目管道" )中并行处理的最大并发项目数(每个响应).

CONCURRENT_REQUESTS

Default: 16

The maximum number of concurrent (ie. simultaneous) requests that will be performed by the Scrapy downloader.

CONCURRENT_REQUESTS_PER_DOMAIN

Default: 8

将对任何单个域执行的并发(即,并发)请求的最大数量.

另请参阅: AutoThrottle扩展程序及其AUTOTHROTTLE_TARGET_CONCURRENCY选项.

CONCURRENT_REQUESTS_PER_IP

Default: 0

将对任何单个IP执行的并发(即,并发)请求的最大数量. 如果不为零,则将忽略CONCURRENT_REQUESTS_PER_DOMAIN设置,而改用此设置. 换句话说,并发限制将应用于每个IP,而不是每个域.

此设置还会影响DOWNLOAD_DELAYAutoThrottle扩展 :如果CONCURRENT_REQUESTS_PER_IP不为零, 则按 IP而不是按域强制执行下载延迟.

DEFAULT_ITEM_CLASS

Default: 'scrapy.item.Item'

将用于实例化Scrapy shell中的项目的默认类.

DEFAULT_REQUEST_HEADERS

Default:

{
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}

用于Scrapy HTTP请求的默认标头. 它们填充在DefaultHeadersMiddleware .

DEPTH_LIMIT

Default: 0

Scope: scrapy.spidermiddlewares.depth.DepthMiddleware

任何网站将允许爬网的最大深度. 如果为零,则不施加限制.

DEPTH_PRIORITY

Default: 0

Scope: scrapy.spidermiddlewares.depth.DepthMiddleware

一个整数,用于根据Request的深度调整Requestpriority .

请求的优先级调整如下:

request.priority = request.priority - ( depth * DEPTH_PRIORITY )

随着深度增加, DEPTH_PRIORITY降低请求优先级(BFO),而负值会增加请求优先级(DFO). 另请参阅Scrapy是否以广度优先或深度优先的顺序爬行? .

Note

与其他优先级设置REDIRECT_PRIORITY_ADJUSTRETRY_PRIORITY_ADJUST相比,此设置以相反的方式调整优先级.

DEPTH_STATS_VERBOSE

Default: False

Scope: scrapy.spidermiddlewares.depth.DepthMiddleware

是否收集详细的深度统计信息. 如果启用此功能,则在统计信息中收集每个深度的请求数.

DNSCACHE_ENABLED

Default: True

是否启用DNS内存缓存.

DNSCACHE_SIZE

Default: 10000

DNS内存缓存大小.

DNS_TIMEOUT

Default: 60

DNS查询的超时时间(以秒为单位). 支持浮动.

DOWNLOADER

Default: 'scrapy.core.downloader.Downloader'

用于爬网的下载器.

DOWNLOADER_HTTPCLIENTFACTORY

Default: 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

定义一个Twisted protocol.ClientFactory类,用于HTTP / 1.0连接(对于HTTP10DownloadHandler ).

Note

如今很少使用HTTP / 1.0,因此您可以放心地忽略此设置,除非您使用Twisted <11.1,或者如果您确实想使用HTTP / 1.0并相应地为http(s)方案覆盖DOWNLOAD_HANDLERS_BASE ,即为'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler' .

DOWNLOADER_CLIENTCONTEXTFACTORY

Default: 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

表示要使用的ContextFactory的类路径.

在这里," ContextFactory"是SSL / TLS上下文的扭曲术语,用于定义要使用的TLS / SSL协议版本,是否进行证书验证,甚至启用客户端身份验证(以及其他各种操作).

Note

Scrapy默认上下文工厂不会执行远程服务器证书验证 . 通常适用于Web抓取.

如果确实需要启用远程服务器证书验证,则Scrapy还可以设置另一个上下文工厂类'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory''scrapy.core.downloader.contextfactory.BrowserLikeContextFactory'使用平台的证书来验证远程端点. 仅在使用Twisted> = 14.0时可用.

如果确实使用自定义ContextFactory,请确保其__init__方法接受method参数(这是OpenSSL.SSL方法映射DOWNLOADER_CLIENT_TLS_METHOD ), tls_verbose_logging参数( bool )和tls_ciphers参数(请参见DOWNLOADER_CLIENT_TLS_CIPHERS ).

DOWNLOADER_CLIENT_TLS_CIPHERS

Default: 'DEFAULT'

使用此设置来自定义默认HTTP / 1.1下载程序使用的TLS / SSL密码.

该设置应包含OpenSSL密码列表格式的字符串,这些密码将用作客户端密码. 更改此设置对于访问某些HTTPS网站可能是必需的:例如,对于具有较弱DH参数的网站,您可能需要使用'DEFAULT:!DH' ;如果网站需要,请启用DEFAULT未包含的特定密码.

DOWNLOADER_CLIENT_TLS_METHOD

Default: 'TLS'

使用此设置来自定义默认HTTP / 1.1下载器使用的TLS / SSL方法.

此设置必须是以下字符串值之一:

  • 'TLS' :映射到OpenSSL的TLS_method() (aka SSLv23_method() ),它允许协议协商,从平台支持的最高协议开始; 默认,推荐
  • 'TLSv1.0' :此值强制HTTPS连接使用TLS版本1.0; 如果您想要Scrapy <1.1的行为,请设置此项
  • 'TLSv1.1' :强制TLS版本1.1
  • 'TLSv1.2' :强制TLS版本1.2
  • 'SSLv3' :强制使用SSL版本3( 不推荐

Note

我们建议您使用PyOpenSSL> = 0.13和Twisted> = 0.13或更高版本(如果可以,请使用Twisted> = 14.0).

DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING

Default: False

将其设置为True将在建立HTTPS连接后启用有关TLS连接参数的DEBUG级别的消息. 记录的信息类型取决于OpenSSL和pyOpenSSL的版本.

此设置仅用于默认的DOWNLOADER_CLIENTCONTEXTFACTORY .

DOWNLOADER_MIDDLEWARES

Default:: {}

包含您的项目中启用的下载器中间件及其命令的字典. 有关更多信息,请参见激活下载程序中间件 .

DOWNLOADER_MIDDLEWARES_BASE

Default:

{
    'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,
    'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,
    'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 500,
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 550,
    'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMiddleware': 560,
    'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': 580,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 590,
    'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750,
    'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,
    'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,
}

一个字典,其中包含默认情况下在Scrapy中启用的下载程序中间件. 低订单更接近引擎,高订单更接近下载器. 您永远不要在项目中修改此设置,而应修改DOWNLOADER_MIDDLEWARES . 有关更多信息,请参见激活下载程序中间件 .

DOWNLOADER_STATS

Default: True

是否启用下载器统计信息收集.

DOWNLOAD_DELAY

Default: 0

从同一网站下载连续页面之前,下载程序应等待的时间(以秒为单位). 这可以用来限制爬网速度,以避免对服务器造成太大的冲击. 支持小数. 例:

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

此设置还受RANDOMIZE_DOWNLOAD_DELAY设置(默认情况下启用)的影响. 默认情况下,Scrapy不会在请求之间等待固定的时间,而是使用0.5 * DOWNLOAD_DELAY和1.5 * DOWNLOAD_DELAY之间的随机间隔.

CONCURRENT_REQUESTS_PER_IP非零时,将对每个ip地址而不是每个域强制执行延迟.

您还可以通过设置download_delay spider属性来为每个蜘蛛更改此设置.

DOWNLOAD_HANDLERS

Default: {}

包含您的项目中启用的请求下载处理程序的字典. 有关示例格式,请参见DOWNLOAD_HANDLERS_BASE .

DOWNLOAD_HANDLERS_BASE

Default:

{
    'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler',
    'http': 'scrapy.core.downloader.handlers.http.HTTPDownloadHandler',
    'https': 'scrapy.core.downloader.handlers.http.HTTPDownloadHandler',
    's3': 'scrapy.core.downloader.handlers.s3.S3DownloadHandler',
    'ftp': 'scrapy.core.downloader.handlers.ftp.FTPDownloadHandler',
}

包含请求下载处理程序的字典,默认情况下在Scrapy中启用. 您永远不要在项目中修改此设置,而应修改DOWNLOAD_HANDLERS .

您可以通过在DOWNLOAD_HANDLERS中将None分配给它们的URI方案来禁用这些下载处理程序中的任何一个. 例如,要禁用内置的FTP处理程序(不替换),请将其放在您的settings.py

DOWNLOAD_HANDLERS = {
    'ftp': None,
}

DOWNLOAD_TIMEOUT

Default: 180

超时之前,下载程序将等待的时间(以秒为单位).

Note

可以使用download_timeout spider属性为每个蜘蛛设置超时,并使用download_timeout Request.meta键为每个请求设置超时.

DOWNLOAD_MAXSIZE

Default: 1073741824 (1024MB)

下载程序将下载的最大响应大小(以字节为单位).

如果要禁用它,请将其设置为0.

Note

可以使用download_maxsize spider属性为每个蜘蛛设置大小,并使用download_maxsize Request.meta键为每个请求设置该大小.

此功能需要Twisted> = 11.1.

DOWNLOAD_WARNSIZE

Default: 33554432 (32MB)

下载程序将开始警告的响应大小(以字节为单位).

如果要禁用它,请将其设置为0.

Note

可以使用download_warnsize spider属性为每个蜘蛛设置大小,并使用download_warnsize Request.meta键为每个请求设置大小.

此功能需要Twisted> = 11.1.

DOWNLOAD_FAIL_ON_DATALOSS

Default: True

失败响应失败,即声明的Content-Length与服务器发送的内容不匹配,或者分块响应是否失败,未正确完成. 如果为True ,则这些响应会引发ResponseFailed([_DataLoss])错误. 如果False ,这些反应通入,标志dataloss被添加到响应,即: 'dataloss' in response.flagsTrue .

Optionally, this can be set per-request basis by using the download_fail_on_dataloss Request.meta key to False.

Note

从服务器配置错误到网络错误再到数据损坏,在几种情况下都可能发生响应中断或数据丢失错误. 用户应根据是否包含部分或不完整内容来决定处理损坏的响应是否有意义. 如果RETRY_ENABLEDTrue且此设置设置为True ,则将像往常一样重试ResponseFailed([_DataLoss])故障.

DUPEFILTER_CLASS

Default: 'scrapy.dupefilters.RFPDupeFilter'

The class used to detect and filter duplicate requests.

缺省( RFPDupeFilter )使用scrapy.utils.request.request_fingerprint函数基于请求指纹进行过滤. 为了更改检查重复项的方式,您可以将RFPDupeFilter子类RFPDupeFilter并覆盖其request_fingerprint方法. 该方法应接受刮擦的Request对象并返回其指纹(字符串).

您可以通过将DUPEFILTER_CLASS设置为'scrapy.dupefilters.BaseDupeFilter'来禁用重复请求的过滤. 但是请特别注意这一点,因为您可能会进入爬网循环. 通常最好将不应过滤的特定Requestdont_filter参数设置为True .

DUPEFILTER_DEBUG

Default: False

默认情况下, RFPDupeFilter仅记录第一个重复请求. 将DUPEFILTER_DEBUG设置为True将使其记录所有重复的请求.

EDITOR

默认值: vi (在Unix系统上)或IDLE编辑器(在Windows上)

用于使用edit命令编辑蜘蛛的edit . 另外,如果设置了EDITOR环境变量,则edit命令将使用它而不是默认设置.

EXTENSIONS

Default:: {}

包含您的项目中启用的扩展及其顺序的字典.

EXTENSIONS_BASE

Default:

{
    'scrapy.extensions.corestats.CoreStats': 0,
    'scrapy.extensions.telnet.TelnetConsole': 0,
    'scrapy.extensions.memusage.MemoryUsage': 0,
    'scrapy.extensions.memdebug.MemoryDebugger': 0,
    'scrapy.extensions.closespider.CloseSpider': 0,
    'scrapy.extensions.feedexport.FeedExporter': 0,
    'scrapy.extensions.logstats.LogStats': 0,
    'scrapy.extensions.spiderstate.SpiderState': 0,
    'scrapy.extensions.throttle.AutoThrottle': 0,
}

字典,其中包含默认情况下在Scrapy中可用的扩展程序及其顺序. 此设置包含所有稳定的内置扩展名. 请记住,其中一些需要通过设置启用.

有关更多信息,请参阅扩展用户指南可用扩展列表 .

FEED_TEMPDIR

Feed Temp dir允许您设置自定义文件夹,以在通过FTP feed feedAmazon S3上传之前保存爬网程序临时文件.

FTP_PASSIVE_MODE

Default: True

启动FTP传输时是否使用被动模式.

FTP_PASSWORD

Default: "guest"

Request元中没有"ftp_password"时,用于FTP连接的密码.

Note

RFC 1635解释 ,尽管通常将密码" guest"或一个人的电子邮件地址用于匿名FTP,但某些FTP服务器明确要求用户的电子邮件地址,并且不允许使用" guest"密码登录.

FTP_USER

Default: "anonymous"

Request元中没有"ftp_user"时,用于FTP连接的用户名.

ITEM_PIPELINES

Default: {}

包含要使用的项目管道及其顺序的字典. 订单值是任意的,但是习惯上将它们定义在0-1000范围内. 低订单先处理高订单.

Example:

ITEM_PIPELINES = {
    'mybot.pipelines.validate.ValidateMyItem': 300,
    'mybot.pipelines.validate.StoreMyItem': 800,
}

ITEM_PIPELINES_BASE

Default: {}

包含在Scrapy中默认启用的管道的字典. 您永远不要在项目中修改此设置,而应修改ITEM_PIPELINES .

LOG_ENABLED

Default: True

是否启用日志记录.

LOG_ENCODING

Default: 'utf-8'

用于日志记录的编码.

LOG_FILE

Default: None

用于记录输出的文件名. 如果为None ,则将使用标准错误.

LOG_FORMAT

Default: '%(asctime)s [%(name)s] %(levelname)s: %(message)s'

String for formatting log messsages. Refer to the Python logging documentation for the whole list of available placeholders.

LOG_DATEFORMAT

Default: '%Y-%m-%d %H:%M:%S'

String for formatting date/time, expansion of the %(asctime)s placeholder in LOG_FORMAT. Refer to the Python datetime documentation for the whole list of available directives.

LOG_FORMATTER

Default: scrapy.logformatter.LogFormatter

用于格式化不同操作的日志消息的类.

LOG_LEVEL

Default: 'DEBUG'

最低记录级别. 可用级别为:严重,错误,警告,信息,调试. 有关更多信息,请参见Logging .

LOG_STDOUT

Default: False

如果为True ,则您过程的所有标准输出(和错误)将被重定向到日志. 例如,如果您print('hello') ,它将显示在Scrapy日志中.

LOG_SHORT_NAMES

Default: False

如果为True ,则日志将仅包含根路径. 如果将其设置为False则显示负责日志输出的组件

LOGSTATS_INTERVAL

Default: 60.0

LogStats每次统计记录日志输出之间的间隔(以秒为单位).

MEMDEBUG_ENABLED

Default: False

是否启用内存调试.

MEMDEBUG_NOTIFY

Default: []

启用内存调试后,如果此设置不为空,则会将内存报告发送到指定的地址,否则该报告将被写入日志.

Example:

MEMDEBUG_NOTIFY = ['[email protected]']

MEMUSAGE_ENABLED

Default: True

Scope: scrapy.extensions.memusage

是否启用内存使用扩展. 此扩展跟踪该进程使用的峰值内存(将其写入统计信息). 它也可以选择在超过内存限制时关闭Scrapy进程(请参阅MEMUSAGE_LIMIT_MB ),并在发生该情况时通过电子邮件通知(请参阅MEMUSAGE_NOTIFY_MAIL ).

See Memory usage extension.

MEMUSAGE_LIMIT_MB

Default: 0

Scope: scrapy.extensions.memusage

关闭Scrapy之前允许的最大内存量(以兆字节为单位)(如果MEMUSAGE_ENABLED为True). 如果为零,则不执行任何检查.

See Memory usage extension.

MEMUSAGE_CHECK_INTERVAL_SECONDS

1.1版的新功能.

Default: 60.0

Scope: scrapy.extensions.memusage

内存使用量扩展程序会以固定的时间间隔检查当前内存使用量,以及MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB设置的限制.

这将设置这些间隔的长度(以秒为单位).

See Memory usage extension.

MEMUSAGE_NOTIFY_MAIL

Default: False

Scope: scrapy.extensions.memusage

电子邮件列表,用于通知是否已达到内存限制.

Example:

MEMUSAGE_NOTIFY_MAIL = ['[email protected]']

See Memory usage extension.

MEMUSAGE_WARNING_MB

Default: 0

Scope: scrapy.extensions.memusage

发送警告电子邮件通知最大内存之前允许的最大内存量(以兆字节为单位). 如果为零,则不会发出警告.

NEWSPIDER_MODULE

Default: ''

使用genspider命令在何处创建新蜘蛛的genspider .

Example:

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY

Default: True

如果启用,则Scrapy在从同一网站获取请求时将等待随机的时间(介于0.5 * DOWNLOAD_DELAY和1.5 * DOWNLOAD_DELAY ).

这种随机性减少了对爬虫进行检测的机会(随后,该站点被分析请求的站点在其请求之间的时间间隔内统计上具有显着相似性的站点进行分析).

随机化策略与wget --random-wait选项使用的策略相同.

如果DOWNLOAD_DELAY为零(默认值),则此选项无效.

REACTOR_THREADPOOL_MAXSIZE

Default: 10

Twisted Reactor线程池大小的最大限制. 这是各种Scrapy组件使用的通用多用途线程池. 线程DNS解析器,BlockingFeedStorage,S3FilesStore仅举几例. 如果遇到阻塞IO不足的问题,请增加此值.

REDIRECT_MAX_TIMES

Default: 20

定义可以重定向请求的最长时间. 超过此最大值后,将按原样返回请求的响应. 我们将Firefox默认值用于同一任务.

REDIRECT_PRIORITY_ADJUST

Default: +2

Scope: scrapy.downloadermiddlewares.redirect.RedirectMiddleware

相对于原始请求调整重定向请求优先级:

  • 优先级调整为正(默认)表示优先级更高.
  • 负优先级调整意味着较低的优先级.

RETRY_PRIORITY_ADJUST

Default: -1

Scope: scrapy.downloadermiddlewares.retry.RetryMiddleware

相对于原始请求调整重试请求优先级:

  • 正优先级调整意味着更高的优先级.
  • 负优先级调整(默认)表示优先级较低.

ROBOTSTXT_OBEY

Default: False

Scope: scrapy.downloadermiddlewares.robotstxt

如果启用,Scrapy将遵守robots.txt策略. 有关更多信息,请参见RobotsTxtMiddleware .

Note

由于历史原因,默认值是False ,但默认情况下,此选项在scrapy startproject命令生成的settings.py文件中启用.

ROBOTSTXT_PARSER

Default: 'scrapy.robotstxt.ProtegoRobotParser'

用于解析robots.txt文件的解析器后端. 有关更多信息,请参见RobotsTxtMiddleware .

ROBOTSTXT_USER_AGENT

Default: None

robots.txt文件中用于匹配的用户代理字符串. 如果为None ,则将与请求一起发送的User-Agent标头或USER_AGENT设置( USER_AGENT顺序)将用于确定在robots.txt文件中使用的用户代理.

SCHEDULER

Default: 'scrapy.core.scheduler.Scheduler'

用于爬网的调度程序.

SCHEDULER_DEBUG

Default: False

设置为True将记录有关请求调度程序的调试信息. 如果请求无法序列化到磁盘,则当前记录(仅记录一次). 统计信息计数器( scheduler/unserializable )跟踪发生这种情况的次数.

日志中的示例条目:

1956-01-31 00:00:00+0800 [scrapy.core.scheduler] ERROR: Unable to serialize request:
<GET http://example.com> - reason: cannot serialize <Request at 0x9a7c7ec>
(type Request)> - no more unserializable requests will be logged
(see 'scheduler/unserializable' stats counter)

SCHEDULER_DISK_QUEUE

Default: 'scrapy.squeues.PickleLifoDiskQueue'

调度程序将使用的磁盘队列的类型. 其他可用类型是scrapy.squeues.PickleFifoDiskQueuescrapy.squeues.MarshalFifoDiskQueuescrapy.squeues.MarshalLifoDiskQueue .

SCHEDULER_MEMORY_QUEUE

Default: 'scrapy.squeues.LifoMemoryQueue'

调度程序使用的内存队列的类型. 其他可用类型是: scrapy.squeues.FifoMemoryQueue .

SCHEDULER_PRIORITY_QUEUE

Default: 'scrapy.pqueues.ScrapyPriorityQueue'

调度程序使用的优先级队列的类型. 另一种可用的类型是scrapy.pqueues.DownloaderAwarePriorityQueue . 当您并行爬网许多不同的域时, scrapy.pqueues.DownloaderAwarePriorityQueue效果比scrapy.pqueues.ScrapyPriorityQueue更好. 但是当前scrapy.pqueues.DownloaderAwarePriorityQueue不能与CONCURRENT_REQUESTS_PER_IP一起使用.

SPIDER_CONTRACTS

Default:: {}

包含您的项目中启用的蜘蛛合约的字典,用于测试蜘蛛. 有关更多信息,请参见蜘蛛合同 .

SPIDER_CONTRACTS_BASE

Default:

{
    'scrapy.contracts.default.UrlContract' : 1,
    'scrapy.contracts.default.ReturnsContract': 2,
    'scrapy.contracts.default.ScrapesContract': 3,
}

包含Scrapy中默认启用的scrapy合同的字典. 您永远不要在项目中修改此设置,而应修改SPIDER_CONTRACTS . 有关更多信息,请参见蜘蛛合同 .

您可以通过为SPIDER_CONTRACTS的类路径分配None来禁用任何这些合同. 例如,要禁用内置的ScrapesContract ,请将其放在您的settings.py

SPIDER_CONTRACTS = {
    'scrapy.contracts.default.ScrapesContract': None,
}

SPIDER_LOADER_CLASS

Default: 'scrapy.spiderloader.SpiderLoader'

将用于加载蜘蛛的类,该类必须实现SpiderLoader API .

SPIDER_LOADER_WARN_ONLY

New in version 1.3.3.

Default: False

默认情况下,当scrapy尝试从SPIDER_MODULES导入Spider类时,如果存在任何ImportError异常,它将大声失败. 但是您可以选择通过设置SPIDER_LOADER_WARN_ONLY = True来使此异常静音并将其转变为简单警告.

Note

一些scrapy命令已经将此设置设置为True了(即,它们只会发出警告并且不会失败),因为它们实际上并不需要加载Spider类才能工作: scrapy runspiderscrapy settingsscrapy startprojectscrapy version .

SPIDER_MIDDLEWARES

Default:: {}

包含您的项目中启用的蜘蛛中间件及其命令的字典. 有关更多信息,请参阅激活蜘蛛中间件 .

SPIDER_MIDDLEWARES_BASE

Default:

{
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
    'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
    'scrapy.spidermiddlewares.referer.RefererMiddleware': 700,
    'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware': 800,
    'scrapy.spidermiddlewares.depth.DepthMiddleware': 900,
}

一个字典,其中包含默认情况下在Scrapy中启用的蜘蛛中间件及其命令. 低阶指令更接近引擎,高阶指令更接近蜘蛛. 有关更多信息,请参阅激活蜘蛛中间件 .

SPIDER_MODULES

Default: []

Scrapy将在其中寻找蜘蛛的模块列表.

Example:

SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']

STATS_CLASS

Default: 'scrapy.statscollectors.MemoryStatsCollector'

用于收集统计信息的类,该类必须实现Stats Collector API .

STATS_DUMP

Default: True

蜘蛛完成后,将Scrapy统计信息转储到Scrapy日志中.

有关更多信息,请参阅: 统计收集 .

STATSMAILER_RCPTS

默认值: [] (空列表)

蜘蛛抓取完毕后发送Scrapy统计信息. 有关更多信息,请参见StatsMailer .

TELNETCONSOLE_ENABLED

Default: True

一个布尔值,指定是否将启用telnet控制台 (前提是还启用了其扩展名).

TELNETCONSOLE_PORT

Default: [6023, 6073]

用于telnet控制台的端口范围. 如果设置为None0 ,则使用动态分配的端口. 有关更多信息,请参阅Telnet控制台 .

TEMPLATES_DIR

默认值:scrapy模块中的templates目录

该目录下创建新的项目时寻找模板startproject的命令,并与新的蜘蛛genspider命令.

项目名称不得与project子目录中的自定义文件或目录的名称冲突.

URLLENGTH_LIMIT

Default: 2083

Scope: spidermiddlewares.urllength

允许搜寻的URL的最大URL长度. 有关此设置的默认值的更多信息,请参见: https : //boutell.com/newfaq/misc/urllength.html

USER_AGENT

Default: "Scrapy/VERSION (+https://scrapy.org)"

爬网时使用的默认User-Agent,除非被覆盖. 这种用户代理也使用RobotsTxtMiddleware如果ROBOTSTXT_USER_AGENT设置是None并且存在针对该请求没有指定overridding用户代理报头.

Settings documented elsewhere:

The following settings are documented elsewhere, please check each specific case to see how to enable and use them.