Scrapy爬虫入门教程十三 Settings(设置)
Python版本管理:pyenv和pyenv-virtualenv
Scrapy爬虫入门教程一 安装和基本使用
Scrapy爬虫入门教程二 官方提供Demo
Scrapy爬虫入门教程三 命令行工具介绍和示例
Scrapy爬虫入门教程四 Spider(爬虫)
Scrapy爬虫入门教程五 Selectors(选择器)
Scrapy爬虫入门教程六 Items(项目)
Scrapy爬虫入门教程七 Item Loaders(项目加载器)
Scrapy爬虫入门教程八 交互式 shell 方便调试
Scrapy爬虫入门教程九 Item Pipeline(项目管道)
Scrapy爬虫入门教程十 Feed exports(导出文件)
Scrapy爬虫入门教程十一 Request和Response(请求和响应)
Scrapy爬虫入门教程十二 Link Extractors(链接提取器)
开发环境:
Python 3.6.0 版本
(当前最新)
Scrapy 1.3.2 版本
(当前最新)
设置
Scrapy设置允许您自定义所有Scrapy组件的行为,包括核心,扩展,管道和爬虫本身。
设置的基础结构提供了键值映射的全局命名空间,代码可以使用它从中提取配置值。可以通过不同的机制来填充设置,这将在下面描述。
这些设置也是选择当前活动Scrapy项目的机制(如果您有很多)。
有关可用内置设置的列表,请参阅:内置设置参考。
指定设置
当你使用Scrapy,你必须告诉它你使用哪些设置。您可以通过使用环境变量来执行此操作SCRAPY_SETTINGS_MODULE
。
值SCRAPY_SETTINGS_MODULE
应该在Python路径语法中,例如 myproject.settings
。请注意,设置模块应该在Python 导入搜索路径上。
填充设置
可以使用不同的机制来填充设置,每个机制具有不同的优先级。这里是按优先级降序排列的列表:
- 命令行选项(最高优先级)
- 每个爬虫的设置
- 项目设置模块
- 每命令的默认设置
- 默认全局设置(优先级较低)
这些设置源的数量在内部处理,但可以使用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_ENABLED
,ROBOTSTXT_OBEY
,ROBOTSTXT_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_DELAY
和 AutoThrottle扩展:如果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
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'
:映射到OpenSSLTLS_method()
(akaSSLv23_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
而应修改 。
您可以通过在其中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_DEBUG
为True
将使其记录所有重复的请求。
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'
记录的最低级别。可用级别为:CRITICAL
,ERROR
,WARNING
,INFO
,DEBUG
。有关详细信息,请参阅日志。
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_ENABLED
为True
)。如果为零,则不执行检查。
请参阅内存使用扩展。
MEMUSAGE_CHECK_INTERVAL_SECONDS
新版本1.1。
默认: 60.0
范围: scrapy.extensions.memusage
该内存使用扩展 检查当前内存使用情况,相对于限制由设置 MEMUSAGE_LIMIT_MB
和MEMUSAGE_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
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.PickleFifoDiskQueue
,scrapy.squeues.MarshalFifoDiskQueue
, scrapy.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