本文为译文,原文见地址:https://docs.scrapy.org/en/latest/topics/settings.html
配置项
Scrapy配置项允许你自定义所有Scrapy组件的行为,包括核心、扩展、管道和爬虫本身。
配置项的基础结构提供了键值映射的全局命名空间,代码可以在项目的任意地方使用该命名空间来提取配置项的值。配置项还可以通过不同的机制来填充数据,后续我们会介绍。
这些配置项同时也是选择当前活动的Scrapy项目的机制(如果有多个项目的话)。
内置的配置项引用,请见这里。
指定配置
当你使用Scrapy时,你必须告诉它,你正在使用的配置是哪一个。你可以使用一个环境变量SCRAPY_SETTINGS_MODULE来实现这一目的。
SCRAPY_SETTINGS_MODULE的值应该是Python的路径语法,比如:myproject.settings。需要注意,配置项模块应该在Python的导入搜索路径上。
填充配置
可以通过不同的机制来填充配置项,每一种机制都有不同的优先级。下面是一份这些机制按照优先级递减的列表:
- 命令行选项(最高优先级)
- 每个爬虫的配置
- 项目配置模块
- 每个命令的默认配置
- 默认的全局配置项(最低优先级)
这些配置项的源的填充在内部就得到了处理,但是也可以使用API调用来手动处理。详情见主题:配置项API。
下面将介绍这些机制。
命令行选项
由命令行提供参数的方式拥有最高的优先级,它将覆盖其他机制的配置。你可以通过使用-s(或者–set)命令行选项来显式重写一个(或多个)配置项。
示例:
scrapy crawl myspider -s LOG_FILE=scrapy.log
每个爬虫的配置
爬虫(详情见爬虫章节)可以定义它们自己的配置项,这些配置项将会覆盖项目级的配置项。可以通过设置爬虫的custom_settings属性来实现这一点:
class MySpider(scrapy.Spider):
name = 'myspider'
custom_settings = {
'SOME_SETTING': "some value',
}
项目配置模块
项目配置项模块是你的项目中的一个标准配置文件,这个文件是填充你大多数自定义配置项的地方。在标准的Scrapy项目中,这意味着你需要在你的项目中创建一个settings.py文件,这个文件用来添加和变更配置项。
每个命令的默认配置
每个Scrapy工具命令可以拥有它自己默认的配置项,这些配置项将覆盖全局默认配置项。这些自定义命令配置项在命令类的default_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属性。如果你希望在初始化之前使用settings(比如,在爬虫的__init__()函数中),你需要重写from_cralwer()函数。
可以通过扩展、中间件和数据项管道中传递给from_cralwer()函数的Crawler对象来访问配置项,即访问了scray.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'))
该settings对象可以像字典一样使用(比如settings[‘LOG_ENABLED’]),但通常我们使用Settings提供的API来提取我们需要的配置项,这样可以避免类型错误。
配置名称的基本原理
配置项的名称通常以它们要配置的组件作为前缀。例如,虚构的robots.txt扩展,其配置项命名一般可以是ROBOTSTXT_ENABLED,ROBOTSTXT_OBEY,ROBOTSTXT_CACHEDIR,等等。
内置的配置引用
这里有一组可用的Scrapy配置项,按照字母表顺序排序,并写出其默认值以及它们的使用范围。
如果该范围与任何特定组件相关联,那么在可用的情况下,该范围将显示使用该配置项的位置。在这种情况下,将显示该组件的模块,通常是一个扩展、中间件或管道。它还意味着必须启动组件,才能使设置生效。
AWS_ACCESS_KEY_ID
默认值:None
AWS(亚马逊网络服务)访问关键字被用来访问亚马逊网络服务,比如S3 feed storage backend。
AWS_SECRET_ACCESS_KEY
默认值:None
AWS加密关键字被用来访问亚马逊网络服务,比如S3 feed storage backend。
BOT_NAME
默认值:‘scrapybot’
该Scrapy项目实现的bot的名称(也称为项目名称)。默认情况下,这将被用来构造用户代理,以及日志记录。
当你使用startproject命令创建项目的时候,你的项目名称将自动填充这个值。
CONCURRENT_ITEMS
默认值:100
在数据项处理器(也称为数据项管道)中并行处理的并发数据项(每个响应)的最大数目。
CONCURRENT_REQUESTS
默认值:16
Scrapy下载器执行的并发(即同步)请求的最大数目。
CONCURRENT_REQUESTS_PER_DOMAIN
默认值:8
对任何单个域执行的并发(即同步)请求的最大数目。
也可参见:AutoThrottle扩展以及它的AUTOTHEROTTLE_TARGET_CONCURRENCY选项。
CONCURRENT_REQUESTS_PER_IP
默认值:0
对任何单个IP执行的并发(即同步)请求的最大数目。如果值为非0,CONCURRENT_REQUESTS_PER_DOMAIN配置项将被忽略,并且使用该值作为替代。一句话,并发限制将应用于每个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请求的默认头。它们在DefaultHeardersMiddleware中被填充。
DEPTH_LIMIT
默认值:0
作用域:scrapy.spidermiddlewares.depth.DepthMiddleware
任何站点允许爬行的最大深度。如果设置为0,则表示没有任何限制。
DEPTH_PRIORITY
默认值:0
作用域:scrapy.spidermiddlewares.depth.DepthMiddleware
根据深度调整请求优先级的整数:
- 如果为0(默认值),不会从深度调整优先级。
- 正值将降低优先级,即更高深度的请求将在稍后处理。这通常用于进行广度优先爬行(BFO)。
- 负值将提升优先级,即更高深度的请求将立马被处理(DFO)。
也可参见:爬虫应该是广度优先还是深度优先?讲述了关于Scrapy的BFO或者DFO。
注意:与其他优先级配置项REDIRECT_PRIORITY_ADJUST和RETRY_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查询处理的超时时长(单位秒)。支持Float类型。
DOWNLOADER
默认值:‘scrapy.core.downloader.Downloader’
用于爬行的下载器。
DOWNLOADER_HTTPCLIENTFACTORY
默认值:‘scrapy.core.downloader.webclient.ScrapyHTTPClientFactory’
定义了一个Twisted的类protocol.ClientFactory,用于HTTP/1.0的连接(HTTP10DownloadHandler)。
注意:HTTP/1.0现在很少使用了,所以你可以安心地忽略这个配置项,除非你使用Twisted<11.1的版本,或者如果你真的想使用HTTP/1.0并相应地为HTTP(s)模式覆盖DOWNLOAD_HANDLERS_BASE,即’scrapy.core.downloader.handlers.http.HTTP10DownloadHandler’。
DOWNLOADER_CLIENTCONTEXTFACTORY
默认值:‘scrapy.core.downloader.contextfactory.ScrapyClientContextFactory’
代表了要使用的ContextFactory的类路径。
这里的“ContextFactory”是一个SSL/TLS上下文的Twisted术语,它定义了要使用的TLS/SSL协议版本,用于进行证书验证,甚至启用客户端身份验证(以及其他各种功能)。
注意:Scrapy默认的上下文工厂不执行远程服务器的证书验证。这通常用于web抓取。如果你需要开启远程服务器的证书验证,Scrapy还有另一个上下文工厂类来设置它——‘scrapy.core.downloader.contextfactory.BrowerLikeContextFactory’,使用平台的证书来验证远程终端。这只有在Twisted>=14.0版本才有用。
如果你使用了一个自定义的ContextFactory,请确保它在init上接受一个method参数(这是OpenSSL.SSL函数映射DOWNLOADER_CLIENT_TLS_METHOD)。
DOWNLOADER_CLEINT_TLS_METHOD
默认值:‘TLS’
使用此配置项自定义默认HTTP/1.1下载器使用的TLS/SSL函数。
这个配置项必须是下面的字符串之一:
- ‘TLS’:映射到OpenSSL的TLS_method()(如你所知的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,
}
一个包含了你的项目中默认启用的下载器中间件的字典。低顺序的更靠近引擎,高顺序的更靠近下载器。你不应该在你的项目中修改这个配置项,而是修改DOWNLOADER_MIDDLEWARES。更多细节请查看激活下载器中间件。
DOWNLOADER_STATS
默认值:True
是否启动收集下载器的统计信息。
DOWNLOAD_DELAY
默认值:0
下载器在从同一个网站下载连续页面之前等待的时间(单位秒)。这将被用来限制爬行速度,以避免对服务器的访问太频繁。支持Decimal数值。例如:
DOWNLOAD_DELAY = 0.25 # 延迟250毫秒
这个配置项也受RANDOMIZE_DOWNLOAD_DELAY配置项(默认是开启的)的影响。默认情况下,Scrapy在请求之间不会等待一个固定时间,而是使用一个随机值,这个随机值在0.5 * DOWNLOAD_DELAY和1.5 * DOWNLOAD_DELAY之间。
当CONCURRENT_REQUESTS_PER_IP是一个非0值,延迟是按照IP地址执行的,而不是按域执行。
DOWNLOAD_HANDLERS
默认值:{}
一个包含了你的项目中启动的请求下载器的处理程序的字典。参见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',
}
一个包含了你的项目中默认启动的请求下载器的处理程序的字典。你不应该在你的项目中修改这个配置项,而应该修改DOWNLOAD_HANDLERS配置项。
你可以在DOWNLOAD_HANDLERS中将URL模式对应的值设置为None,这样可以禁用对应的下载器处理程序。比如,为了禁用内置的FTP处理程序,你可以在你的settings.py中这样写:
DOWNLOAD_HANDLERS = {
'ftp': None,
}
DOWNLOAD_TIMEOUT
默认值:180
下载器的最大超时等待时长(单位秒)
注意:这里的超时可以通过每个爬虫的download_timeout属性来设置,也可以通过每个请求的Request.meta关键字download_timeout来设置。
DOWNLOAD_MAXSIZE
默认值:1073741824(1024MB)
下载器允许下载的响应最大size(单位字节)
如果你希望禁用它,则设置为0。
注意:这里的size可以通过每个爬虫的download_maxsize属性来设置,也可以通过每个请求的Request.meta关键字download_maxsize来设置。这个特性需要Twisted>=11.1的版本。
DOWNLOAD_WARNSIZE
默认值:33554432(32MB)
下载器开始报警的响应size(单位字节)
如果你想禁用它,则设置为0。
注意:这个size可以通过每个爬虫的download_warnsize属性来设置,也可以通过每个请求的Request.meta关键字download_warnsize来设置。这个特性需要Twisted>=11.1的版本。
DOWNLOAD_FAIL_ON_DATALOSS
默认值:True
是否在中断的响应上失败,即声明的Content-Length与服务器发送的内容不匹配,或者分块响应未能正确完成。如果设置为True,这些响应将抛出一个ResponseFailed([_DataLoss])的错误。如果设置为False,这些响应将可以进行传递,并且这些响应的属性flag将会填充值dataloss,比如:‘dataloss’ in response.flag返回True。
另外,这个配置项可以通过每个请求的Request.meta关键字download_fail_on_dataloss来设置为False。
注意:在一些情况下,从服务器错误配置到网络错误,再到数据损坏,可能会出现响应中断或者数据丢失错误。考虑到中断的响应可能包含部分或不完整的内,由用户决定处理这些响应是否有意义。如果RETRY_ENABLED为True,并且该配置项配置为True,则会像往常一样重试ResponseFailed([_DataLoss])失败。
DUPEFILTER_CLASS
默认值:‘scrapy.dupefilters.RFPDupeFilter’
这个类用来发现和筛选重复的请求。
默认筛选器(RFPDupeFilter)基于请求的fingerprint使用scrapy.utils.request.request_fingerprint方法。为了改变重复检查的方式,你可以子类化RFPDupeFilter并重写它的request_fingerprint函数。这个函数应该接收scrapy的Request对象并返回它的fingerprint(一个字符串)。
你可以将DUPEFILTER_CLASS设置为’scrapy.dupefilters.BaseDupeFilter’来禁止过滤重复的请求。需要小心使用此方式,因为你可能会因此掉入一个爬行循环中。通常更好的方法是,在不应该被过滤的Request对象上设置dont_filter参数为True。
DUPEFILTER_DEBUG
默认值:False
默认情况下,RFPDupeFilter仅记录第一个重复的请求。设置DUPEFILTER_DEBUG为True将记录所有重复的请求。
EDITOR
默认值:vi(在Unix系统)或者IDLE编辑器(在Windows)
edit命令召唤出来的编辑爬虫的编辑器。此外,如果设置了EDITOR环境变量,那么edit命令将使用这个环境变量的值来覆盖默认配置项。
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,
}
一个字典,包含了项目中启动了的、有序的且默认的扩展。这个配置项包含了所有标准的内置扩展。请记住,其中一些需要通过配置来开启。
FEED_TEMPDIR
一个临时文件夹,在使用FTP feed storage和Amazon S3上传之前,设置的一个自定义文件夹来保存爬行器的临时文件。
FTP_PASSIVE_MODE
默认值:True
当初始化FTP传输器时,是否启用被动模式。
FTP_PASSWORD
默认值:“guest”
在Request.meta中没有ftp_password键时,使用这个配置项的值作为FTP连接的密码。
注意:释义RFC 1635,尽管对于匿名FTP来说,通常使用“guest”密码或者电子邮件地址,但一些FTP服务器明确要求使用用户的电子邮件地址,而不允许使用“guest”密码登录。
FTP_USER
默认值:“anonymous”
在Request.meta中没有ftp_user键时,使用这个配置项的值作为FTP连接的账户。
ITEM_PIPELINES
默认值:{}
一个包含了带顺序的数据项管道的字典。顺序值是任意的,在0-1000范围内。先处理低顺序值的,再处理高顺序值的。
示例:
ITEM_PIPELINES = {
'mybot.pipelines.validate.ValidateMyItem': 300,
'mybot.pipelines.validate.StoreMyItem': 800,
}
ITEM_PIPELINES_BASE
默认值:{}
一个包含了默认的,带顺序的数据项管道的字典。你不应该在你的项目中修改此配置项,而是修改ITEM_PIPELIENS配置项。
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’
日期/时间的字符串格式,解释了LOG_FORMAT中的%(asctime)s占位符。查看Python时间文档,了解可用表达符的列表。
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 = ['[email protected]']
MEMUSAGE_ENABLED
默认值:True
作用域:scrapy.extensions.memusage
是否启用内存使用扩展。这个扩展持续追踪了进程使用内存的峰值(它将其写入stats)。当进程超过一个内存限制(见MEMUSAGE_LIMIT_MB)时,它也可以关闭这个Scrapy进程,并且以电子邮件的形式进行通知(见MEMUSAGE_NOTIFY_MAIL)。
详情见内存使用扩展。
MEMUSAGE_LIMIT_MB
默认值:0
作用域:scrapy.extensions.memusage
允许Scrapy使用内存的最大数量(单位MB),超过这个值则关闭Scrapy(如果MEMUSAGE_ENABLED为True)。如果该配置项的值为0,则不会执行任何检查。
详情见内存使用扩展。
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 = ['[email protected]']
详情见内存使用扩展。
MEMUSAGE_WARNING_MB
默认值:0
作用域:scrapy.extensions.memusage
在发送一个告警邮件之前允许的最大内存容量(单位MB)。如果该配置项的值为0,则不会产生告警。
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为0(默认值),这个配置项没有任何效果。
REACTOR_THREADPOOL_MAXSIZE
默认值:10
Twisted Reactor线程池大小的最大限制。这是各种Scrapy组件使用的通用的多用途线程池。Threaded DNS Resolver,BlockingFeedStorage,S3FilesStore等等。如果你遇到阻塞IO不足的问题,请增加这个值的大小。
REDIRECT_MAX_TIMES
默认值:20
一个请求可以被重定向的最大次数。在这个最大次数后,请求的响应将按原样返回。这里我们使用的值与Firefox的默认值一致。
REDIRECT_PRIORITY_ADJUST
默认值:+2
作用域:scrapy.downloadermiddlewares.redirect.RedirectMiddleware
相对于原始请求,调整重定向请求优先级:
- 一个正值优先级调整(默认)表示拥有更高的优先级。
- 一个负值优先级调整表示拥有耕地的优先级。
RETRY_PRIORITY_ADJUST
默认值:-1
作用域:scrapy.downloadermiddlewares.RetryMiddleware
相对于原始请求,调整重试请求的优先级:
- 一个正值优先级调整表示拥有更高的优先级。
- 一个负值优先级调整(默认)表示拥有更低的优先级。
ROBOTSTXT_OBEY
默认值:False
作用域:scrapy.downloadermiddlewares.robotstxt
如果开启,Scrapy将遵守robos.txt的策略。更多信息请见RobotsTxtMiddleware。
注意:虽然由于历史的原因,默认值为False,但如果使用scrapy startproject命令创建的工程,在settings.py文件中这个配置项默认是为True的。
SCHEDULER
默认值:‘scrapy.core.scheduler.Scheduler’
用来爬行的调度器。
SCEHDULER_DEBUG
默认值:False
设置为True,则会记录请求调度器的调试信息。如果无法将请求序列化到磁盘,则当前日志记录(仅一次)。Stats计数器(调度器/不可序列化)跟踪发生这种情况的次数。
日志中的示例:
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)
SCEHDULER_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
默认值:{}
一个包含项目中启用的爬虫契约的字典,用来测试爬虫。更多信息见爬虫的契约。
SPIDER_CONTRACTS_BASE
默认值:
{
'scrapy.contracts.default.UrlContract' : 1,
'scrapy.contracts.default.ReturnsContract': 2,
'scrapy.contracts.default.ScrapesContract': 3,
}
一个包含项目中启用的默认爬虫契约的字典。你不应该更改项目中的这个配置项,而是修改SPIDER_CONTRACTS配置项。更多信息见爬虫的契约。
你可以在SPIDER_CONTRACTS配置项中,设置契约为None来禁用这个契约。比如,为了禁用内置的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,
}
一个包含了项目中启动的默认爬虫中间件的字典,并带有这些中间件的顺序。低顺序的更接近引擎,高顺序的更接近爬虫。更多信息请见活动的爬虫中间件。
SPIDER_MODULES
默认值:[]
一组Scrapy查找爬虫的模块。
示例:
SPIDER_MODUES = ['mybot.spiders_prod', 'mybot.spiders_dev']
STATS_CLASS
默认值:‘scrapy.statscollectors.MemoryStatsCollector’
用来收集统计信息的类,这个类必须实现Stats Collector API。
STATS_DUMP
默认值:True
一旦爬虫完成,将Scrapy统计信息转储(到Scrapy日志)。
更多信息见收集统计信息(Stats Collection)。
STATSMAILER_RCPTS
默认值:[](空列表)
在爬虫完成爬取后发送Scrapy统计信息。见StatsMailer。
TELNETCONSOLE_ENABLED
默认值:True
用于指定是否启用telnet控制台(如果还启用了其扩展)。
TELNETCONSOLE_PORT
默认值:[6023, 6073]
用于telnet控制台的端口范围。如果设置为None或0,则使用动态分配的端口。有关更多信息,请参阅Telnet控制台。
TEMPLATES_DIR
默认值:Scrapy模块中的templates文件夹
使用startproject命令创建新项目和使用genspider命令创建新爬虫时查找模板的目录。
项目名称不能与项目子目录中的自定义文件或目录名称冲突。
URLLENGTH_LIMIT
默认值:2083
作用域:spidermiddlewares.urllength
允许抓取URL的最大URL长度。有关此设置的默认值的更多信息。请参阅:https://boutell.com/newfaq/misc/urllength.html
USER_AGENT
默认值:“Scrapy/VERSION (+https://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_EXPORT_INDENT
- 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
- GCS_PROJECT_ID
- 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
- HTTPPROXY_ENABLED
- 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
- MEDIA_ALLOW_REDIRECTS
- METAREFRESH_ENABLED
- METAREFRESH_MAXDELAY
- REDIRECT_ENABLED
- REDIRECT_MAX_TIMES
- REFERER_ENABLED
- REFERRER_POLICY
- RETRY_ENABLED
- RETRY_HTTP_CODES
- RETRY_TIMES
- TELNETCONSOLE_HOST
- TELNETCONSOLE_PORT