原文请参考    Scrapy 爬虫入门教程十三 Settings(设置), 讲的很详细

官网参考  Settings

设置

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

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

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

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

指定设置

当你使用 Scrapy,你必须告诉它你使用哪些设置。您可以通过使用环境变量来执行此操作SCRAPY_SETTINGS_MODULE

SCRAPY_SETTINGS_MODULE应该在 Python 路径语法中,例如 myproject.settings。请注意,设置模块应该在 Python 导入搜索路径上

填充设置

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

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

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

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

1. 命令行选项

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

例:

scrapy crawl myspider -s LOG_FILE=scrapy.log

2. 每个爬虫的设置

爬虫(请参阅爬虫章节以供参考)可以定义自己的设置,这些设置将优先并覆盖项目。他们可以通过设置custom_settings属性来实现:

class MySpider(scrapy.Spider):
name = 'myspider' custom_settings = {
'SOME_SETTING': 'some value',
}

3. 项目设置模块

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

4. 每命令的默认设置

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

5. 默认全局设置

全局默认值位于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())

注意

settings爬虫初始化后的属性是在基类爬虫设置。如果你想在初始化之前使用设置(例如,在你的爬虫的__init__()方法),你需要覆盖该 from_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'])一样使用,但通常首选使用SettingsAPI 提供的方法之一,以您需要的格式提取设置,以避免类型错误。

设置名称的原因

设置名称通常以它们配置的组件为前缀。例如,对于一个虚构的 robots.txt 分机正确的设置的名称将是 ROBOTSTXT_ENABLEDROBOTSTXT_OBEYROBOTSTXT_CACHEDIR等。

内置设置参考

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

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

AWS_ACCESS_KEY_ID

默认: None

由需要访问 Amazon Web 服务的代码使用的 AWS 访问密钥,例如 S3 源存储后端

AWS_SECRET_ACCESS_KEY

默认: None

由需要访问 Amazon Web 服务的代码使用的 AWS 密钥,例如 S3 源存储后端。

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 shell 中实例化项的默认类。

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

Does Scrapy crawl in breadth-first or depth-first order?

By default, Scrapy uses a LIFO queue for storing pending requests, which basically means that it crawls in DFO order. This order is more convenient in most cases. If you do want to crawl in true BFO order, you can do it by setting the following settings:

DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'

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 查询的超时。支持浮点。

DOWNLOADER

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

用于抓取的下载器。

DOWNLOADER_HTTPCLIENTFACTORY

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

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

注意

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,确保它接受一个method 参数在 init(这是OpenSSL.SSL方法映射DOWNLOADER_CLIENT_TLS_METHOD)。

DOWNLOADER_CLIENT_TLS_METHOD

默认: '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(不推荐)

注意

我们建议您使用 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而应修改 。有关更多信息,请参阅 激活下载器中间件

看到这里,我发现之前改的随即请求头的数字也是400,说明要跟defaultheaders 的顺序保持一致,不得不佩服别人的细心!

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而应修改 。

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

DOWNLOAD_HANDLERS = {
'ftp': None,
}

DOWNLOAD_TIMEOUT

默认: 180

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

注意

可以使用download_timeout Spider 属性和每个请求使用download_timeout Request.meta键为每个爬虫设置此超时。

DOWNLOAD_MAXSIZE

默认值:1073741824(1024MB)

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

如果要禁用它设置为 0。

注意

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

此功能需要 Twisted> = 11.1。

DOWNLOAD_WARNSIZE

默认值:33554432(32MB)

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

如果要禁用它设置为 0。

注意

可以使用download_warnsize Spider 属性和每个请求使用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_DEBUGTrue将使其记录所有重复的请求。

EDITOR

默认值:取决于环境

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

EXTENSIONS

默认:: {}

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

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 Temd dir 允许您在使用 FTP 源存储和 Amazon 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 日志记录文档。

LOG_DATEFORMAT

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

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

LOG_LEVEL

默认: 'DEBUG'

记录的最低级别。可用级别为:CRITICALERRORWARNINGINFODEBUG。有关详细信息,请参阅日志。

LOG_STDOUT

默认: False

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

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_ENABLEDTrue)。如果为零,则不执行检查。

请参阅内存使用扩展

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 政策。有关详细信息,请参阅 RobotsTxtMiddleware

注意

虽然默认值是False由于历史原因,默认情况下在 settings.py 文件中通过命令生成此选项。scrapy startproject

If Request.meta has dont_obey_robotstxt key set to True the request will be ignored by this middleware even if ROBOTSTXT_OBEY is enabled.

SCHEDULER

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

用于爬网的调度程序。

SCHEDULER_DEBUG

默认: False

设置 True 将记录有关请求调度程序的调试信息。如果请求无法序列化到磁盘,则当前日志(仅一次)。Stats counter(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,如果有任何ImportError异常,它将大声失败。但是你可以选择沉默此异常,并通过设置将其变成一个简单的警告。SPIDER_LOADER_WARN_ONLY = True

注意

有些 scrapy 命令使用此设置运行True 已经(即他们只会发出警告并不会失败),因为他们实际上并不需要加载爬虫类的工作: scrapy runspider, scrapy settings, scrapy startproject, scrapy 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 Collector API

STATS_DUMP
默认: True

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

更多信息请参阅:统计数据收集

STATSMAILER_RCPTS

默认:( []空列表)

爬虫完成刮擦后发送 Scrapy stats。查看 StatsMailer 更多信息。

TELNETCONSOLE_ENABLED

默认: True

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

TELNETCONSOLE_PORT

默认: [6023, 6073]

用于 telnet 控制台的端口范围。如果设置为 None 或 0,则使用动态分配的端口。有关详细信息,请参阅 telnet 控制台

TEMPLATES_DIR

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

使用startproject命令和新爬虫创建新项目时使用命令查找模板的目录 genspider

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

URLLENGTH_LIMIT

默认: 2083

范围: spidermiddlewares.urllength

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

USER_AGENT

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

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

其他地方记录的设置:

以下设置在其他地方记录,请检查每个具体案例,了解如何启用和使用它们。

  • AJAXCRAWL_ENABLED
  • AUTOTHROTTLE_DEBUG
  • AUTOTHROTTLE_ENABLED
  • AUTOTHROTTLE_MAX_DELAY
  • AUTOTHROTTLE_START_DELAY
  • AUTOTHROTTLE_TARGET_CONCURRENCY
  • CLOSESPIDER_ERRORCOUNT
  • CLOSESPIDER_ITEMCOUNT
  • CLOSESPIDER_PAGECOUNT
  • CLOSESPIDER_TIMEOUT
  • COMMANDS_MODULE
  • COMPRESSION_ENABLED
  • COOKIES_DEBUG
  • COOKIES_ENABLED
  • FEED_EXPORTERS
  • FEED_EXPORTERS_BASE
  • FEED_EXPORT_ENCODING
  • FEED_EXPORT_FIELDS
  • FEED_FORMAT
  • FEED_STORAGES
  • FEED_STORAGES_BASE
  • FEED_STORE_EMPTY
  • FEED_URI
  • FILES_EXPIRES
  • FILES_RESULT_FIELD
  • FILES_STORE
  • FILES_STORE_S3_ACL
  • FILES_URLS_FIELD
  • HTTPCACHE_ALWAYS_STORE
  • HTTPCACHE_DBM_MODULE
  • HTTPCACHE_DIR
  • HTTPCACHE_ENABLED
  • HTTPCACHE_EXPIRATION_SECS
  • HTTPCACHE_GZIP
  • HTTPCACHE_IGNORE_HTTP_CODES
  • HTTPCACHE_IGNORE_MISSING
  • HTTPCACHE_IGNORE_RESPONSE_CACHE_CONTROLS
  • HTTPCACHE_IGNORE_SCHEMES
  • HTTPCACHE_POLICY
  • HTTPCACHE_STORAGE
  • HTTPERROR_ALLOWED_CODES
  • HTTPERROR_ALLOW_ALL
  • HTTPPROXY_AUTH_ENCODING
  • IMAGES_EXPIRES
  • IMAGES_MIN_HEIGHT
  • IMAGES_MIN_WIDTH
  • IMAGES_RESULT_FIELD
  • IMAGES_STORE
  • IMAGES_STORE_S3_ACL
  • IMAGES_THUMBS
  • IMAGES_URLS_FIELD
  • MAIL_FROM
  • MAIL_HOST
  • MAIL_PASS
  • MAIL_PORT
  • MAIL_SSL
  • MAIL_TLS
  • MAIL_USER
  • METAREFRESH_ENABLED
  • METAREFRESH_MAXDELAY
  • REDIRECT_ENABLED
  • REDIRECT_MAX_TIMES
  • REFERER_ENABLED
  • RETRY_ENABLED
  • RETRY_HTTP_CODES
  • RETRY_TIMES
  • TELNETCONSOLE_HOST
  • TELNETCONSOLE_PORT

常用的scrapy setting的更多相关文章

  1. scrapy setting 备注

    scrapy 脚本里面设置输出文件: process = CrawlerProcess(settings) process.settings.set('FEED_URI', 'wangyi.csv', ...

  2. python爬虫常用之Scrapy 中间件

    一.概述 1.中间件的作用 在scrapy运行的整个过程中,对scrapy框架运行的某些步骤做一些适配自己项目的动作. 例如scrapy内置的HttpErrorMiddleware,可以在http请求 ...

  3. python爬虫常用之Scrapy 简述

    一.安装 pip install scrapy. 如果提示需要什么包就装什么包 有的包pip安装不起,需要自己下载whl文件进行安装. 二.基本的爬虫流程 通用爬虫有如下几步: 构造url --> ...

  4. scrapy 琐碎的东西

    1.深度指定 DEPTH_LIMIT=1 2.常用命令 scrapy startproject name scrapy genspider name name.com scrapy crawl nam ...

  5. scrapy爬虫

    a. 配置文件 #settings.py DEPTH_LIMIT = 1 #指定“递归”的层数 ROBOTSTXT_OBEY = False #对方网站规定哪些网址可以爬,这个选项表示不遵循此规定 b ...

  6. Scrapy 爬虫项目框架

    1. Scrapy 简介 2. Scrapy 项目开发介绍 3. Scrapy 项目代码示例 3.1 setting.py:爬虫基本配置 3.2 items.py:定义您想抓取的数据 3.3 spid ...

  7. scrapy的命令行

    scrapy --help 列出帮助信息以及常用命令scrapy version 列出scrapy版本scrapy version -v 列出详细的scrapy版本以及各组件信息 scrapy sta ...

  8. Scrapy命令行详解

    官方文档:https://doc.scrapy.org/en/latest/ Global commands: startproject genspider settings runspider sh ...

  9. Python3 scrapy 新手命令

    基本命令 建立项目 scrapy startproject projectname #在CMD命令框内执行,路径是你需要保存的位置 建立爬虫 cd projectname #在CMD命令框内执行,目的 ...

随机推荐

  1. 【题解】Inspection UVa 1440 LA 4597 NEERC 2009

    题目传送门:https://vjudge.net/problem/UVA-1440 看上去很像DAG的最小路径覆盖QwQ? 反正我是写了一个上下界网络流,建模方法清晰易懂. 建立源$s$,向每个原图中 ...

  2. 驱动学习3.1:获取zynqled的物理地址

    自己想要打印EMIO管脚的物理地址,在SDK提供的头文件中加入printf是无法打印的,基于此 我将需要打印地址的几个函数提取出来,放在main函数中,然后在里面加入printf打印这些用户管脚的地址 ...

  3. pthread在Qt+Windows下的使用

    pthread是牛逼的跨平台线程库,无需多介绍. 下载pthread-win32,解压后将x86里的pthreadVC2.dll放到system32目录里,将pthreadVC2.lib放入项目中去, ...

  4. 子集系列(二) 满足特定要求的子集,例 [LeetCode] Combination, Combination Sum I, II

    引言 既上一篇 子集系列(一) 后,这里我们接着讨论带有附加条件的子集求解方法. 这类题目也是求子集,只不过不是返回所有的自己,而往往是要求返回满足一定要求的子集. 解这种类型的题目,其思路可以在上一 ...

  5. 分享 koa + mysql 的开发流程,构建 node server端,一次搭建个人博客

    前言 由于一直在用 vue 写业务,为了熟悉下 react 开发模式,所以选择了 react.数据库一开始用的是 mongodb,后来换成 mysql 了,一套下来感觉 mysql 也挺好上手的.re ...

  6. 树的性质和dfs的性质 Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E

    http://codeforces.com/contest/782/problem/E 题目大意: 有n个节点,m条边,k个人,k个人中每个人都可以从任意起点开始走(2*n)/k步,且这个步数是向上取 ...

  7. DLL初试

    环境: VC++6.0 步骤: 1.建立一个WIN32 DYNAMIC-LINK LIBRARY工程,编写CPP文件,文件内容例如: #include "stdafx.h" #in ...

  8. [洛谷P2747] [USACO5.4]周游加拿大Canada Tour

    洛谷题目链接:[USACO5.4]周游加拿大Canada Tour 题目描述 你赢得了一场航空公司举办的比赛,奖品是一张加拿大环游机票.旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行, ...

  9. 重构改善既有代码设计--重构手法08:Replace Method with Method Object (以函数对象取代函数)

    你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method. 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型 ...

  10. 每个Web开发者都需要具备的9个软技能

    对于一份工作,你可能专注于修炼自己的内功,会在不自觉中忽视软技能.硬技能决定你是否能得到工作,而软技能能够表明你是否适合这份工作和适应工作环境等.所有的公司都有属于自己的文化,并努力将这些文化传承下去 ...