Skip to main content

设置

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

设置的基础结构提供了键值映射的全局命名空间,代码可以使用它从中提取配置值。可以通过不同的机制来填充设置,这将在下面描述。

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

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

指定设置

当你使用Scrapy,你必须告诉它你使用哪些设置。你可以通过使用环境变量 SCRAPY_SETTINGS_MODULE 来做到这一点。

SCRAPY_SETTINGS_MODULE 的值应该是Python路径语法,例如。 myproject.settings。请注意,设置模块应该在Python import search path 上。

填充设置

可以使用不同的机制来填充设置,每个机制具有不同的优先级。这里是按优先级降序排列的列表:

  1. 命令行选项(最高优先级)

  2. 每个蜘蛛的设置

  3. 项目设置模块

  4. 每命令的默认设置

  5. 默认全局设置(优先级较低)

这些设置源的数量在内部处理,但可以使用API调用进行手动处理。请参阅 设置API 主题以供参考。

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

1. Command line options

命令行提供的参数是最优先的参数,覆盖任何其他选项。您可以使用 -s (或 --set)命令行选项显式覆盖一个(或多个)设置。

例:

scrapy crawl myspider -s LOG_FILE=scrapy.log

2. Settings per-spider

Spiders(请参阅 蜘蛛 章节以供参考)可以定义自己的设置,这些设置将优先并覆盖项目。他们可以通过设置他们的 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 模块中,并记录在 内置设置参考 部分中。

如何访问设置

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

注解

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

设置可以通过Crawler的 scrapy.crawler.Crawler.settings 属性访问,该属性传递到扩展,中间件和项目管道中的 from_crawler 方法:

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['LOG_ENABLED'])一样使用,但通常首选使用 Settings API提供的方法之一以您需要的格式提取设置,以避免类型错误。

设置名称的原因

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

内置设置参考

以下是所有可用Scrapy设置的列表,按字母顺序,以及其默认值和适用范围。

范围(如果可用)显示设置在哪里使用,如果它绑定到任何特定组件。在这种情况下,将显示该组件的模块,通常是扩展,中间件或管道。这也意味着必须启用组件才能使设置具有任何效果。

AWS_ACCESS_KEY_ID

默认值:None

需要访问 Amazon Web services 的代码使用的AWS访问密钥,例如 S3 feed存储后端

AWS_SECRET_ACCESS_KEY

默认值:None

需要访问 Amazon Web services 的代码使用的AWS密钥,例如 S3 feed存储后端

BOT_NAME

默认值:'scrapybot'

此Scrapy项目实施的bot的名称(也称为项目名称)。这将用于默认情况下构造User-Agent,也用于日志记录。

当您使用 startproject 命令创建项目时,将自动填充您的项目名称。

CONCURRENT_ITEMS

默认值:100

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

CONCURRENT_REQUESTS

默认值:16

将由Scrapy下载器执行的并发(即同时)请求的最大数量。

CONCURRENT_REQUESTS_PER_DOMAIN

默认值:8

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

参见:AutoThrottle扩展 及其 AUTOTHROTTLE_TARGET_CONCURRENCY 选项。

CONCURRENT_REQUESTS_PER_IP

默认值:0

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

此设置还会影响 DOWNLOAD_DELAYAutoThrottle扩展:如果 CONCURRENT_REQUESTS_PER_IP 非零,则每个IP(而不是每个域)强制执行下载延迟。

DEFAULT_ITEM_CLASS

默认值:'scrapy.item.Item'

将用于在 Scrapy外壳 中实例化项目的默认类。

DEFAULT_REQUEST_HEADERS

默认:

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

用于Scrapy HTTP请求的默认标头。他们居住在 DefaultHeadersMiddleware

DEPTH_LIMIT

默认值:0

范围:scrapy.spidermiddlewares.depth.DepthMiddleware

允许抓取任何网站的最大深度。如果为零,则不施加限制。

DEPTH_PRIORITY

默认值:0

范围:scrapy.spidermiddlewares.depth.DepthMiddleware

用于根据深度调整请求优先级的整数:

  • 如果为零(默认),则不从深度进行优先级调整

  • 正值将降低优先级,即,以后将处理更高深度的请求;这通常用于做广度优先爬网(BFO)

  • 负值将增加优先级,即,更快的深度请求将被更快地处理(DFO)

参见:Scrapy是否以广度优先或深度优先顺序爬行? 关于调整BFO或DFO的Scrapy。

注解

此设置相对于其他优先级设置 REDIRECT_PRIORITY_ADJUSTRETRY_PRIORITY_ADJUST 来调整优先级 以相反的方式

DEPTH_STATS

默认值:True

范围:scrapy.spidermiddlewares.depth.DepthMiddleware

是否收集最大深度统计。

DEPTH_STATS_VERBOSE

默认值:False

范围:scrapy.spidermiddlewares.depth.DepthMiddleware

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

DNSCACHE_ENABLED

默认值:True

是否启用DNS内存缓存。

DNSCACHE_SIZE

默认值:10000

DNS内存缓存大小。

DNS_TIMEOUT

默认值:60

以秒为单位处理DNS查询的超时。支持浮点。

下载器

默认值:'scrapy.core.downloader.Downloader'

用于抓取的下载器。

DOWNLOADER_HTTPCLIENTFACTORY

默认值:'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

定义用于HTTP/1.0连接(用于 HTTP10DownloadHandler)的扭曲 protocol.ClientFactory 类。

注解

HTTP/1.0现在很少使用,所以你可以安全地忽略这个设置,除非你使用Twisted <11.1,或者你真的想使用HTTP/1.0和覆盖 DOWNLOAD_HANDLERS_BASE 相应的 http(s) 方案,即 'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler'

DOWNLOADER_CLIENTCONTEXTFACTORY

默认值:'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

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

这里,“ContextFactory”是用于SSL/TLS上下文的Twisted术语,定义要使用的TLS/SSL协议版本,是否进行证书验证,或者甚至启用客户端验证(以及各种其他事情)。

注解

Scrapy默认上下文工厂 不执行远程服务器证书验证。这通常对于网络刮削是很好的。

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

如果您使用自定义的ContextFactory,请确保它在init处接受一个 method 参数(这是映射 DOWNLOADER_CLIENT_TLS_METHODOpenSSL.SSL 方法)。

DOWNLOADER_CLIENT_TLS_METHOD

默认值:'TLS'

使用此设置可自定义默认HTTP/1.1下载程序使用的TLS/SSL方法。

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

  • 'TLS':映射到OpenSSL的 TLS_method() (a.k.a SSLv23_method()),允许协议协商,从平台支持的最高开始; 默认,推荐

  • 'TLSv1.0':此值强制HTTPS连接使用TLS版本1.0;如果你想要Scrapy <1.1的行为,设置这个

  • 'TLSv1.1':强制TLS版本1.1

  • 'TLSv1.2':强制TLS版本1.2

  • 'SSLv3':强制SSL版本3(不建议

注解

我们建议您使用PyOpenSSL> = 0.13和Twisted> = 0.13或以上(如果可以,Twisted> = 14.0)。

DOWNLOADER_MIDDLEWARES

默认:: {}

包含在您的项目中启用的下载程序中间件及其顺序的字典。更多信息请参阅 激活下载中间件

DOWNLOADER_MIDDLEWARES_BASE

默认:

{
    '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

默认值:True

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

DOWNLOAD_DELAY

默认值: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

默认值:{}

包含在您的项目中启用的请求下载器处理程序的dict。有关示例格式,请参阅 DOWNLOAD_HANDLERS_BASE

DOWNLOAD_HANDLERS_BASE

默认:

{
    '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

默认值:180

下载器在超时前等待的时间量(以秒为单位)。

注解

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

DOWNLOAD_MAXSIZE

默认值:1073741824 (1024MB)

下载器将下载的最大响应大小(以字节为单位)。

如果要禁用它设置为0。

注解

可以使用 download_maxsize 蜘蛛属性和每个请求使用 download_maxsize Request.meta键为每个蜘蛛设置此大小。

此功能需要Twisted> = 11.1。

DOWNLOAD_WARNSIZE

默认值:33554432 (32MB)

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

如果要禁用它设置为0。

注解

可以使用 download_warnsize 蜘蛛属性和每个请求使用 download_warnsize Request.meta键为每个蜘蛛设置此大小。

此功能需要Twisted> = 11.1。

DUPEFILTER_CLASS

默认值:'scrapy.dupefilters.RFPDupeFilter'

用于检测和过滤重复请求的类。

默认(RFPDupeFilter)过滤器基于请求指纹使用 scrapy.utils.request.request_fingerprint 功能。为了改变检查重复的方式,你可以继承 RFPDupeFilter 并重写它的 request_fingerprint 方法。这个方法应该接受scrapy Request 对象并返回其指纹(一个字符串)。

DUPEFILTER_DEBUG

默认值:False

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

编辑

默认值:depends on the environment

用于使用 edit 命令编辑蜘蛛的编辑器。如果设置,它默认为 EDITOR 环境变量。否则,它默认为 vi (在Unix系统上)或IDLE编辑器(在Windows上)。

扩展

默认:: {}

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

EXTENSIONS_BASE

默认:

{
    '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源存储亚马逊S3 上传之前设置自定义文件夹以保存抓取工具临时文件。

ITEM_PIPELINES

默认值:{}

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

例:

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

ITEM_PIPELINES_BASE

默认值:{}

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

LOG_ENABLED

默认值:True

是否启用日志记录。

LOG_ENCODING

默认值:'utf-8'

用于记录的编码。

LOG_FILE

默认值:None

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

LOG_FORMAT

默认值:'%(asctime)s [%(name)s] %(levelname)s: %(message)s'

用于格式化日志消息的字符串。有关可用占位符的完整列表,请参阅 Python logging documentation

LOG_DATEFORMAT

默认值:'%Y-%m-%d %H:%M:%S'

用于格式化日期/时间的字符串,在 LOG_FORMAT 中扩展 %(asctime)s 占位符。有关可用指令的完整列表,请参阅 Python datetime documentation

LOG_LEVEL

默认值:'DEBUG'

记录的最低级别。可用级别为:CRITICAL,ERROR,WARNING,INFO,DEBUG。更多信息请参阅 记录

LOG_STDOUT

默认值:False

如果 True,您的进程的所有标准输出(和错误)将被重定向到日志。例如,如果您 print 'hello' 它将出现在Scrapy日志中。

LOG_SHORT_NAMES

默认值:False

如果 True,日志将只包含根路径。如果设置为 False,那么它将显示负责日志输出的组件

MEMDEBUG_ENABLED

默认值:False

是否启用内存调试。

MEMDEBUG_NOTIFY

默认值:[]

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

例:

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED

默认值:False

范围:scrapy.extensions.memusage

是否启用内存使用扩展,当超过内存限制时关闭Scrapy进程,并在发生这种情况时通过电子邮件通知。

内存使用扩展

MEMUSAGE_LIMIT_MB

默认值:0

范围:scrapy.extensions.memusage

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

内存使用扩展

MEMUSAGE_CHECK_INTERVAL_SECONDS

1.1 新版功能.

默认值:60.0

范围:scrapy.extensions.memusage

内存使用扩展 以固定的时间间隔检查当前内存使用情况,与 MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB 设置的限制。

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

内存使用扩展

MEMUSAGE_NOTIFY_MAIL

默认值:False

范围:scrapy.extensions.memusage

要达到内存限制时通知的电子邮件列表。

例:

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

内存使用扩展

MEMUSAGE_REPORT

默认值:False

范围:scrapy.extensions.memusage

是否在每个蜘蛛关闭后发送内存使用报告。

内存使用扩展

MEMUSAGE_WARNING_MB

默认值:0

范围:scrapy.extensions.memusage

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

NEWSPIDER_MODULE

默认值:''

模块在哪里使用 genspider 命令创建新的蜘蛛网。

例:

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY

默认值:True

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

该随机化降低了由分析请求的站点检测(并随后阻塞)爬行器的机会,所述站点在它们的请求之间的时间内寻找统计上显着的相似性。

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

如果 DOWNLOAD_DELAY 为零(默认),此选项不起作用。

REACTOR_THREADPOOL_MAXSIZE

默认值:10

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

REDIRECT_MAX_TIMES

默认值:20

定义请求可重定向的最长时间。在此最大值之后,请求的响应被原样返回。我们对同一个任务使用Firefox默认值。

REDIRECT_PRIORITY_ADJUST

默认值:+2

范围:scrapy.downloadermiddlewares.redirect.RedirectMiddleware

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

  • 正优先级调整(默认)意味着更高的优先级。

  • 负优先级调整意味着较低优先级。

RETRY_PRIORITY_ADJUST

默认值:-1

范围:scrapy.downloadermiddlewares.retry.RetryMiddleware

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

  • 正优先级调整意味着更高的优先级。

  • 负优先级调整(默认)表示较低优先级。

ROBOTSTXT_OBEY

默认值:False

范围:scrapy.downloadermiddlewares.robotstxt

如果启用,Scrapy会尊重robots.txt政策。有关更多信息,请参阅 机器人Txt中间件

注解

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

SCHEDULER

默认值:'scrapy.core.scheduler.Scheduler'

用于爬网的调度程序。

SCHEDULER_DEBUG

默认值: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

默认值:'scrapy.squeues.PickleLifoDiskQueue'

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

SCHEDULER_MEMORY_QUEUE

默认值:'scrapy.squeues.LifoMemoryQueue'

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

SCHEDULER_PRIORITY_QUEUE

默认值:'queuelib.PriorityQueue'

调度程序使用的优先级队列的类型。

SPIDER_CONTRACTS

默认:: {}

包含在项目中启用的蜘蛛契约的dict,用于测试蜘蛛。更多信息请参阅 蜘蛛合同

SPIDER_CONTRACTS_BASE

默认:

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

包含Scrapy中默认启用的scrapy合约的dict。您不应该在项目中修改此设置,而应修改 SPIDER_CONTRACTS。详情请参阅 蜘蛛合同

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

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

SPIDER_LOADER_CLASS

默认值:'scrapy.spiderloader.SpiderLoader'

将用于加载蜘蛛程序的类,它必须实现 SpiderLoader API

SPIDER_LOADER_WARN_ONLY

1.3.3 新版功能.

默认值:False

默认情况下,当scrapy尝试从 SPIDER_MODULES 导入spider类时,如果有任何 ImportError 异常,它将大声失败。但是你可以选择沉默这个异常,并通过设置 SPIDER_LOADER_WARN_ONLY = True 将其变成一个简单的警告。

注解

一些 scrapy命令 已经使用这个设置运行到 True (即他们只会发出一个警告,并不会失败),因为他们实际上不需要加载蜘蛛类工作:scrapy runspiderscrapy settingsscrapy startprojectscrapy version

SPIDER_MIDDLEWARES

默认:: {}

包含在您的项目中启用的蜘蛛中间件的字典及其顺序。更多信息请参阅 激活蜘蛛中间件

SPIDER_MIDDLEWARES_BASE

默认:

{
    '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

默认值:[]

Scrapy将寻找蜘蛛的模块列表。

例:

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

STATS_CLASS

默认值:'scrapy.statscollectors.MemoryStatsCollector'

用于收集统计信息的类,谁必须实现 Stats收集器API

STATS_DUMP

默认值:True

一旦蜘蛛完成,转储 Scrapy统计 (到Scrapy日志)。

详情请参阅:统计数据

STATSMAILER_RCPTS

默认值:[] (空列表)

蜘蛛完成刮擦后发送Scrapy stats。有关详细信息,请参阅 StatsMailer

TELNETCONSOLE_ENABLED

默认值:True

布尔值,指定是否将启用 telnet控制台 (如果其扩展也启用)。

TELNETCONSOLE_PORT

默认值:[6023, 6073]

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

TEMPLATES_DIR

默认值:templates dir里面的scrapy模块

使用 startproject 命令创建新项目时使用 genspider 命令查找模板的目录和使用 genspider 命令的新蜘蛛程序。

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

URLLENGTH_LIMIT

默认值:2083

范围:spidermiddlewares.urllength

允许抓取网址的最大网址长度。有关此设置的默认值的详细信息,请参阅:http://www.boutell.com/newfaq/misc/urllength.html

用户代理

默认值:"Scrapy/VERSION (+http://scrapy.org)"

检索时使用的默认用户代理,除非被覆盖。