Scrapy – 设置

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

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

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

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

指定设置¶

当你使用Scrapy时,你必须告诉它你使用的设置。您可以通过使用环境变量, SCRAPY_SETTINGS_MODULE .

价值 SCRAPY_SETTINGS_MODULE 应该使用python路径语法,例如 myproject.settings . 注意,设置模块应该在python上 import search path .

填充设置¶

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

  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',
}

三。项目设置模块¶

项目设置模块是碎屑项目的标准配置文件,它将填充大部分自定义设置。对于标准的Scrapy项目,这意味着您将在 settings.py 为项目创建的文件。

4。每个命令的默认设置¶

Scrapy tool 命令可以有自己的默认设置,这将覆盖全局默认设置。这些自定义命令设置在 default_settings 命令类的属性。

5。默认全局设置¶

全局默认值位于 scrapy.settings.default_settings 并记录在 内置设置参考 部分。

导入路径和类¶

VERSION 新版功能.

当设置引用要由scray导入的可调用对象(如类或函数)时,可以使用两种不同的方法指定该对象:

  • 作为包含该对象的导入路径的字符串

  • 作为对象本身

例如::

from mybot.pipelines.validate import ValidateMyItem
ITEM_PIPELINES = {
# passing the classname...
ValidateMyItem: 300,
# ...equals passing the class path
'mybot.pipelines.validate.ValidateMyItem': 300,
}

注解

不支持传递不可调用的对象。

如何访问设置¶

在Spider中,可以通过 self.settings ::

class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://example.com']
def parse(self, response):
print(f"Existing settings: {self.settings.attributes.keys()}")

注解

这个 settings 属性在Spider初始化后在基本Spider类中设置。如果要在初始化之前使用这些设置(例如,在Spider的 __init__() 方法),您需要重写 from_crawler() 方法。

可以通过访问 scrapy.crawler.Crawler.settings 传递给的爬网程序的属性 from_crawler 扩展、中间商和项目管道中的方法:

class MyExtension:
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 应用程序编程接口。

设置名称的理由¶

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

内置设置参考¶

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

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

AWS_ACCESS_KEY_ID¶

违约: None

需要访问的代码使用的AWS访问密钥 Amazon Web services ,比如 S3 feed storage backend .

AWS_SECRET_ACCESS_KEY¶

违约: None

需要访问的代码使用的AWS密钥 Amazon Web services ,比如 S3 feed storage backend .

AWS_ENDPOINT_URL¶

违约: None

用于类似S3的存储的端点URL,例如Minio或S3.scality。

AWS_USE_SSL¶

违约: None

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

AWS_VERIFY¶

违约: None

验证scray和S3或类似S3的存储之间的SSL连接。默认情况下,将进行SSL验证。

AWS_REGION_NAME¶

违约: None

与AWS客户端关联的区域的名称。

ASYNCIO_EVENT_LOOP¶

违约: None

给定的异步事件循环类的导入路径。

如果启用了异步电抗器(请参阅 TWISTED_REACTOR )此设置可用于指定要与之一起使用的异步事件循环。将设置设置为所需的异步事件循环类的导入路径。如果设置为 None 将使用默认的异步事件循环。

如果要使用 install_reactor() 函数,可以使用 event_loop_path 参数指示要使用的事件循环类的导入路径。

请注意,事件循环类必须继承自 asyncio.AbstractEventLoop .

BOT_NAME¶

违约: 'scrapybot'

这个项目的名字叫Scrapy。此名称也将用于日志记录。

当您使用 startproject 命令。

CONCURRENT_ITEMS¶

违约: 100

中并行处理的最大并发项数(每个响应) item pipelines .

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'

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

DEFAULT_REQUEST_HEADERS¶

违约::

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

用于报废HTTP请求的默认头。他们住在 DefaultHeadersMiddleware .

DEPTH_LIMIT¶

违约: 0

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

允许对任何网站进行爬网的最大深度。如果为零,则不施加限制。

DEPTH_PRIORITY¶

违约: 0

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

用于调整 priority A的 Request 根据它的深度。

请求的优先级调整如下:

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

随着深度的增加,正值为 DEPTH_PRIORITY 降低请求优先级(BFO),而负值则提高请求优先级(DFO)。也见 Scrapy是以广度优先还是深度优先的顺序爬行? .

注解

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

DEPTH_STATS_VERBOSE¶

违约: False

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

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

DNSCACHE_ENABLED¶

违约: True

是否启用DNS内存缓存。

DNSCACHE_SIZE¶

违约: 10000

DNS内存缓存大小。

DNS_RESOLVER¶

2.0 新版功能.

违约: 'scrapy.resolver.CachingThreadedResolver'

用于解析DNS名称的类。违约 scrapy.resolver.CachingThreadedResolver 支持通过指定DNS请求的超时 DNS_TIMEOUT 设置,但仅适用于IPv4地址。Scrapy提供了另一种解决方案, scrapy.resolver.CachingHostnameResolver ,它支持IPv4/IPv6地址,但不使用 DNS_TIMEOUT 考虑在内。

DNS_TIMEOUT¶

违约: 60

处理DNS查询的超时(秒)。支持浮动。

DOWNLOADER¶

违约: 'scrapy.core.downloader.Downloader'

用于爬行的下载程序。

DOWNLOADER_HTTPCLIENTFACTORY¶

违约: 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

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

注解

现在很少使用HTTP/1.0,所以您可以安全地忽略此设置,除非您确实想使用HTTP/1.0并重写 DOWNLOAD_HANDLERS 对于 http(s) 相应的计划,即 'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler' .

DOWNLOADER_CLIENTCONTEXTFACTORY¶

违约: 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

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

这里,“ContextFactory”是一个用于SSL/TLS上下文的扭曲术语,它定义了要使用的TLS/SSL协议版本,无论是进行证书验证,还是甚至启用客户端身份验证(以及其他各种事情)。

注解

剪贴默认上下文工厂 不执行远程服务器证书验证 . 这通常对爬取Web很好。

如果您确实需要启用远程服务器证书验证,scrapy还可以设置另一个上下文工厂类, 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory' ,它使用平台的证书来验证远程端点。

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

DOWNLOADER_CLIENT_TLS_CIPHERS¶

违约: 'DEFAULT'

使用此设置可自定义默认HTTP/1.1下载器使用的TLS/SSL密码。

该设置应包含 OpenSSL cipher list format ,这些密码将用作客户端密码。更改此设置可能是访问某些HTTPS网站所必需的:例如,您可能需要使用 'DEFAULT:!DH' 对于DH参数较弱的网站,或启用未包含在中的特定密码 DEFAULT 如果网站需要的话。

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( 未推荐的

DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING¶

违约: False

设置为 True 将在建立HTTPS连接后启用有关TLS连接参数的调试级别消息。记录的信息类型取决于openssl和pyopenssl的版本。

此设置仅用于默认 DOWNLOADER_CLIENTCONTEXTFACTORY .

DOWNLOADER_MIDDLEWARES¶

违约:: {{}}

包含项目中启用的下载器中间软件及其订单的dict。有关详细信息,请参阅 激活下载器中间件 .

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,
}

包含默认在scrappy中启用的下载器中间软件的dict。低阶更接近引擎,高阶更接近下载器。您不应该在项目中修改此设置,请修改 DOWNLOADER_MIDDLEWARES 相反。有关详细信息,请参阅 激活下载器中间件 .

DOWNLOADER_STATS¶

违约: True

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

DOWNLOAD_DELAY¶

违约: 0

下载者从同一网站下载连续页面之前应等待的时间(以秒计)。这可以用来限制爬行速度,以避免对服务器造成太大的冲击。支持十进制数。例子::

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

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

什么时候? CONCURRENT_REQUESTS_PER_IP 为非零,每个IP地址而不是每个域强制延迟。

您还可以通过设置每个蜘蛛更改此设置 download_delay 蜘蛛属性。

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',
}

包含在scrappy中默认启用的请求下载处理程序的dict。您不应该在项目中修改此设置,请修改 DOWNLOAD_HANDLERS 相反。

您可以通过分配 None 到他们的URI方案 DOWNLOAD_HANDLERS . 例如,要禁用内置的ftp处理程序(不替换),请将其放入 settings.py ::

DOWNLOAD_HANDLERS = {
'ftp': None,
}

DOWNLOAD_TIMEOUT¶

违约: 180

下载程序在超时前等待的时间(以秒计)。

注解

可以使用以下方法设置每个蜘蛛的超时 download_timeout 蜘蛛属性和每个请求使用 download_timeout request.meta键。

DOWNLOAD_MAXSIZE¶

违约: 1073741824 (1024MB)

下载程序将下载的最大响应大小(字节)。

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

注解

此尺寸可通过使用 download_maxsize 蜘蛛属性和每个请求使用 download_maxsize request.meta键。

DOWNLOAD_WARNSIZE¶

违约: 33554432 (32 MB)

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

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

注解

此尺寸可通过使用 download_warnsize 蜘蛛属性和每个请求使用 download_warnsize request.meta键。

DOWNLOAD_FAIL_ON_DATALOSS¶

违约: True

是否在错误的响应上失败,也就是说,声明 Content-Length 与服务器发送的内容不匹配,或者分块响应未正确完成。如果 True ,这些反应引发了 ResponseFailed([_DataLoss]) 错误。如果 False ,这些响应将传递给 dataloss 添加到响应中,即: 'dataloss' in response.flagsTrue .

或者,可以通过使用 download_fail_on_dataloss 请求.meta键 False .

注解

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

DUPEFILTER_CLASS¶

违约: 'scrapy.dupefilters.RFPDupeFilter'

用于检测和筛选重复请求的类。

默认值 (RFPDupeFilter )根据请求指纹使用 scrapy.utils.request.request_fingerprint 功能。为了更改检查重复项的方式,可以将 RFPDupeFilter 并覆盖其 request_fingerprint 方法。这个方法应该接受slapy Request 对象并返回其指纹(字符串)。

您可以通过设置禁用重复请求的筛选 DUPEFILTER_CLASS'scrapy.dupefilters.BaseDupeFilter' . 但是要非常小心,因为您可以进入爬行循环。通常设置 dont_filter 参数到 True 论具体 Request 这不应该被过滤。

DUPEFILTER_DEBUG¶

违约: False

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

EDITOR¶

违约: vi (在UNIX系统上)或空闲编辑器(在Windows上)

用于编辑蜘蛛的编辑器 edit 命令。此外,如果 EDITOR 设置了环境变量, edit 命令将优先于默认设置。

EXTENSIONS¶

违约:: {{}}

包含项目中启用的扩展及其顺序的dict。

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,
}

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

有关更多信息,请参阅 extensions user guide 以及 list of available extensions .

FEED_TEMPDIR¶

feed temp目录允许您设置自定义文件夹,以便在上载之前保存crawler临时文件 FTP feed storageAmazon S3 .

FEED_STORAGE_GCS_ACL¶

将项存储到中时使用的访问控制列表(ACL) Google Cloud Storage . 有关如何设置此值的详细信息,请参阅列 JSON API 在里面 Google Cloud documentation .

FTP_PASSIVE_MODE¶

违约: True

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

FTP_PASSWORD¶

违约: "guest"

当没有ftp连接时用于ftp连接的密码 "ftp_password" 在里面 Request 元。

注解

释义 RFC 1635 尽管匿名ftp通常使用密码“guest”或电子邮件地址,但有些ftp服务器明确要求用户的电子邮件地址,不允许使用“guest”密码登录。

FTP_USER¶

违约: "anonymous"

当没有ftp连接时用于ftp连接的用户名 "ftp_user" 在里面 Request 元。

GCS_PROJECT_ID¶

违约: None

在上存储数据时将使用的项目ID Google Cloud Storage .

ITEM_PIPELINES¶

违约: {{}}

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

例子::

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

ITEM_PIPELINES_BASE¶

违约: {{}}

包含默认情况下在Scrapy中启用的管道的dict。您不应该在项目中修改此设置,请修改 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'

用于格式化日期/时间的字符串,扩展 %(asctime)s 占位符 LOG_FORMAT . 参考 Python datetime documentation 对于可用指令的整个列表。

LOG_FORMATTER¶

违约: scrapy.logformatter.LogFormatter

用于的类 formatting log messages 对于不同的行动。

LOG_LEVEL¶

违约: 'DEBUG'

要记录的最低级别。可用级别包括:严重、错误、警告、信息、调试。有关详细信息,请参阅 登录 .

LOG_STDOUT¶

违约: False

如果 True ,进程的所有标准输出(和错误)都将重定向到日志。例如,如果你 print('hello') 它会出现在残缺的木头上。

LOG_SHORT_NAMES¶

违约: False

如果 True 日志只包含根路径。如果设置为 False 然后显示负责日志输出的组件

LOGSTATS_INTERVAL¶

违约: 60.0

统计信息的每个日志打印输出之间的间隔(秒) LogStats .

MEMDEBUG_ENABLED¶

违约: False

是否启用内存调试。

MEMDEBUG_NOTIFY¶

违约: []

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

例子::

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED¶

违约: True

经营范围: scrapy.extensions.memusage

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

内存使用扩展 .

MEMUSAGE_LIMIT_MB¶

违约: 0

经营范围: scrapy.extensions.memusage

关闭scrappy前允许的最大内存量(以兆字节为单位)(如果memusage_enabled为true)。如果为零,则不执行任何检查。

内存使用扩展 .

MEMUSAGE_CHECK_INTERVAL_SECONDS¶

违约: 60.0

经营范围: scrapy.extensions.memusage

这个 Memory usage extension 检查当前内存使用情况,与 MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB ,以固定的时间间隔。

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

内存使用扩展 .

MEMUSAGE_NOTIFY_MAIL¶

违约: False

经营范围: scrapy.extensions.memusage

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

例子::

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

内存使用扩展 .

MEMUSAGE_WARNING_MB¶

违约: 0

经营范围: scrapy.extensions.memusage

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

NEWSPIDER_MODULE¶

违约: ''

模块在何处使用 genspider 命令。

例子::

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY¶

违约: True

如果启用,Scrapy将随机等待一段时间(0.5之间 * DOWNLOAD_DELAY and 1.5 * DOWNLOAD_DELAY )同时从同一网站获取请求。

这种随机化减少了爬虫被站点检测(并随后被阻止)的机会,这些站点分析请求,寻找它们请求之间的时间有统计学意义的相似性。

随机化策略与 wget --random-wait 选择权。

如果 DOWNLOAD_DELAY 为零(默认值)此选项无效。

REACTOR_THREADPOOL_MAXSIZE¶

违约: 10

扭曲反应器线程池大小的最大限制。这是各种 Scrapy 组件使用的通用多用途线程池。线程DNS解析器,blockingfeedstorage,s3filestore等等。如果遇到阻塞IO不足的问题,请增加此值。

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 命令。

ROBOTSTXT_PARSER¶

违约: 'scrapy.robotstxt.ProtegoRobotParser'

用于分析的分析器后端 robots.txt 文件夹。有关详细信息,请参阅 RobotsTxtMiddleware .

ROBOTSTXT_USER_AGENT¶

违约: None

中用于匹配的用户代理字符串机器人.txt文件。如果 None ,随请求或 USER_AGENT 设置(按该顺序)将用于确定要在中使用的用户代理机器人.txt文件。

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¶

违约: 'scrapy.pqueues.ScrapyPriorityQueue'

调度程序使用的优先级队列的类型。另一种可用类型是 scrapy.pqueues.DownloaderAwarePriorityQueue . scrapy.pqueues.DownloaderAwarePriorityQueuescrapy.pqueues.ScrapyPriorityQueue 当您并行地对许多不同的域进行爬网时。但目前 scrapy.pqueues.DownloaderAwarePriorityQueue 不与一起工作 CONCURRENT_REQUESTS_PER_IP .

SCRAPER_SLOT_MAX_ACTIVE_SIZE¶

2.0 新版功能.

违约: 5_000_000

正在处理的响应数据的软限制(字节)。

当正在处理的所有响应的大小之和大于此值时,Scrapy不处理新请求。

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'

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

SPIDER_LOADER_WARN_ONLY¶

违约: False

默认情况下,当Scrapy试图从 SPIDER_MODULES 如果有的话,它会很响地失效。 ImportError 例外。但是您可以选择沉默这个异常,并通过设置将它变成一个简单的警告 SPIDER_LOADER_WARN_ONLY = True .

注解

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

SPIDER_MIDDLEWARES¶

违约:: {{}}

包含项目中启用的蜘蛛中间件及其订单的dict。有关详细信息,请参阅 激活蜘蛛中间件 .

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中间件的dict,默认情况下在scrappy中启用,以及它们的顺序。低阶更接近发动机,高阶更接近蜘蛛。有关详细信息,请参阅 激活蜘蛛中间件 .

SPIDER_MODULES¶

违约: []

Scrapy将在其中查找蜘蛛的模块列表。

例子::

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

STATS_CLASS¶

违约: 'scrapy.statscollectors.MemoryStatsCollector'

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

STATS_DUMP¶

违约: True

转储 Scrapy stats (对着残破的木头)一旦蜘蛛完成。

有关详细信息,请参阅: 统计数据集合 .

STATSMAILER_RCPTS¶

违约: [] (空表)

蜘蛛完成爬取后发送残缺数据。见 StatsMailer 更多信息。

TELNETCONSOLE_ENABLED¶

违约: True

一个布尔值,指定 telnet console 将被启用(前提是它的扩展也被启用)。

TEMPLATES_DIR¶

违约: templates Scrapy 模块内部目录

创建新项目时要在其中查找模板的目录 startproject 命令和新蜘蛛 genspider 命令。

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

TWISTED_REACTOR¶

2.0 新版功能.

违约: None

给定的导入路径 reactor .

如果还没有安装其他反应器,比如当 scrapy 调用CLI程序或在使用 CrawlerProcess 班级。

如果您正在使用 CrawlerRunner 类,还需要手动安装正确的reactor。你可以用 install_reactor()

scrapy.utils.reactor.install_reactor(reactor_path, event_loop_path=None)[源代码]

安装 reactor 具有指定的导入路径。如果启用了asyncio reactor,还将使用指定的导入路径安装asyncio事件循环

如果已经安装了反应堆, install_reactor() 没有效果。

CrawlerRunner.__init__ 加薪 Exception 如果安装的反应堆与 TWISTED_REACTOR 设置;因此,具有顶层 reactor 项目文件中的导入和导入的第三方库将导致垃圾的增加 Exception 当它检查安装了哪个反应堆。

为了使用Scrapy安装的反应器:

import scrapy
from twisted.internet import reactor
class QuotesSpider(scrapy.Spider):
name = 'quotes'
def __init__(self, *args, **kwargs):
self.timeout = int(kwargs.pop('timeout', '60'))
super(QuotesSpider, self).__init__(*args, **kwargs)
def start_requests(self):
reactor.callLater(self.timeout, self.stop)
urls = ['http://quotes.toscrape.com/page/1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for quote in response.css('div.quote'):
yield {'text': quote.css('span.text::text').get()}
def stop(self):
self.crawler.engine.close_spider(self, 'timeout')

使 Exception ,变成:

import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
def __init__(self, *args, **kwargs):
self.timeout = int(kwargs.pop('timeout', '60'))
super(QuotesSpider, self).__init__(*args, **kwargs)
def start_requests(self):
from twisted.internet import reactor
reactor.callLater(self.timeout, self.stop)
urls = ['http://quotes.toscrape.com/page/1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for quote in response.css('div.quote'):
yield {'text': quote.css('span.text::text').get()}
def stop(self):
self.crawler.engine.close_spider(self, 'timeout')

的默认值 TWISTED_REACTOR 设置是 None ,这意味着Scrapy不会尝试安装任何特定的reactor,并且将使用Twisted为当前平台定义的默认reactor。这是为了保持向后兼容性,并避免使用非默认反应器可能导致的问题。

有关其他信息,请参阅 Choosing a Reactor and GUI Toolkit Integration .

URLLENGTH_LIMIT¶

违约: 2083

经营范围: spidermiddlewares.urllength

允许已爬网URL的最大URL长度。有关此设置的默认值的详细信息,请参阅:https://boutell.com/newfaq/misc/urllength.html

USER_AGENT¶

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

爬网时要使用的默认用户代理,除非被重写。此用户代理还由 RobotsTxtMiddleware 如果 ROBOTSTXT_USER_AGENT 设置是 None 并且没有为请求指定重写用户代理头。

其他地方记录的设置:¶

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

  • 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

  • FEEDS

  • FEED_EXPORTERS

  • FEED_EXPORTERS_BASE

  • FEED_EXPORT_BATCH_ITEM_COUNT

  • FEED_EXPORT_ENCODING

  • FEED_EXPORT_FIELDS

  • FEED_EXPORT_INDENT

  • FEED_STORAGES

  • FEED_STORAGES_BASE

  • FEED_STORAGE_FTP_ACTIVE

  • FEED_STORAGE_S3_ACL

  • FEED_STORE_EMPTY

  • FEED_URI_PARAMS

  • FILES_EXPIRES

  • FILES_RESULT_FIELD

  • FILES_STORE

  • FILES_STORE_GCS_ACL

  • 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

  • HTTPPROXY_ENABLED

  • IMAGES_EXPIRES

  • IMAGES_MIN_HEIGHT

  • IMAGES_MIN_WIDTH

  • IMAGES_RESULT_FIELD

  • IMAGES_STORE

  • IMAGES_STORE_GCS_ACL

  • 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_IGNORE_TAGS

  • METAREFRESH_MAXDELAY

  • REDIRECT_ENABLED

  • REDIRECT_MAX_TIMES

  • REFERER_ENABLED

  • REFERRER_POLICY

  • RETRY_ENABLED

  • RETRY_HTTP_CODES

  • RETRY_TIMES

  • TELNETCONSOLE_HOST

  • TELNETCONSOLE_PASSWORD

  • TELNETCONSOLE_PORT

  • TELNETCONSOLE_USERNAME

指定设置¶

当你使用Scrapy时,你必须告诉它你使用的设置。您可以通过使用环境变量, SCRAPY_SETTINGS_MODULE .

价值 SCRAPY_SETTINGS_MODULE 应该使用python路径语法,例如 myproject.settings . 注意,设置模块应该在python上 import search path .

填充设置¶

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

  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',
}

三。项目设置模块¶

项目设置模块是碎屑项目的标准配置文件,它将填充大部分自定义设置。对于标准的Scrapy项目,这意味着您将在 settings.py 为项目创建的文件。

4。每个命令的默认设置¶

Scrapy tool 命令可以有自己的默认设置,这将覆盖全局默认设置。这些自定义命令设置在 default_settings 命令类的属性。

5。默认全局设置¶

全局默认值位于 scrapy.settings.default_settings 并记录在 内置设置参考 部分。

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',
}

三。项目设置模块¶

项目设置模块是碎屑项目的标准配置文件,它将填充大部分自定义设置。对于标准的Scrapy项目,这意味着您将在 settings.py 为项目创建的文件。

4。每个命令的默认设置¶

Scrapy tool 命令可以有自己的默认设置,这将覆盖全局默认设置。这些自定义命令设置在 default_settings 命令类的属性。

5。默认全局设置¶

全局默认值位于 scrapy.settings.default_settings 并记录在 内置设置参考 部分。

导入路径和类¶

VERSION 新版功能.

当设置引用要由scray导入的可调用对象(如类或函数)时,可以使用两种不同的方法指定该对象:

  • 作为包含该对象的导入路径的字符串

  • 作为对象本身

例如::

from mybot.pipelines.validate import ValidateMyItem
ITEM_PIPELINES = {
# passing the classname...
ValidateMyItem: 300,
# ...equals passing the class path
'mybot.pipelines.validate.ValidateMyItem': 300,
}

注解

不支持传递不可调用的对象。

如何访问设置¶

在Spider中,可以通过 self.settings ::

class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://example.com']
def parse(self, response):
print(f"Existing settings: {self.settings.attributes.keys()}")

注解

这个 settings 属性在Spider初始化后在基本Spider类中设置。如果要在初始化之前使用这些设置(例如,在Spider的 __init__() 方法),您需要重写 from_crawler() 方法。

可以通过访问 scrapy.crawler.Crawler.settings 传递给的爬网程序的属性 from_crawler 扩展、中间商和项目管道中的方法:

class MyExtension:
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 应用程序编程接口。

设置名称的理由¶

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

内置设置参考¶

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

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

AWS_ACCESS_KEY_ID¶

违约: None

需要访问的代码使用的AWS访问密钥 Amazon Web services ,比如 S3 feed storage backend .

AWS_SECRET_ACCESS_KEY¶

违约: None

需要访问的代码使用的AWS密钥 Amazon Web services ,比如 S3 feed storage backend .

AWS_ENDPOINT_URL¶

违约: None

用于类似S3的存储的端点URL,例如Minio或S3.scality。

AWS_USE_SSL¶

违约: None

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

AWS_VERIFY¶

违约: None

验证scray和S3或类似S3的存储之间的SSL连接。默认情况下,将进行SSL验证。

AWS_REGION_NAME¶

违约: None

与AWS客户端关联的区域的名称。

ASYNCIO_EVENT_LOOP¶

违约: None

给定的异步事件循环类的导入路径。

如果启用了异步电抗器(请参阅 TWISTED_REACTOR )此设置可用于指定要与之一起使用的异步事件循环。将设置设置为所需的异步事件循环类的导入路径。如果设置为 None 将使用默认的异步事件循环。

如果要使用 install_reactor() 函数,可以使用 event_loop_path 参数指示要使用的事件循环类的导入路径。

请注意,事件循环类必须继承自 asyncio.AbstractEventLoop .

BOT_NAME¶

违约: 'scrapybot'

这个项目的名字叫Scrapy。此名称也将用于日志记录。

当您使用 startproject 命令。

CONCURRENT_ITEMS¶

违约: 100

中并行处理的最大并发项数(每个响应) item pipelines .

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'

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

DEFAULT_REQUEST_HEADERS¶

违约::

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

用于报废HTTP请求的默认头。他们住在 DefaultHeadersMiddleware .

DEPTH_LIMIT¶

违约: 0

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

允许对任何网站进行爬网的最大深度。如果为零,则不施加限制。

DEPTH_PRIORITY¶

违约: 0

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

用于调整 priority A的 Request 根据它的深度。

请求的优先级调整如下:

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

随着深度的增加,正值为 DEPTH_PRIORITY 降低请求优先级(BFO),而负值则提高请求优先级(DFO)。也见 Scrapy是以广度优先还是深度优先的顺序爬行? .

注解

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

DEPTH_STATS_VERBOSE¶

违约: False

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

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

DNSCACHE_ENABLED¶

违约: True

是否启用DNS内存缓存。

DNSCACHE_SIZE¶

违约: 10000

DNS内存缓存大小。

DNS_RESOLVER¶

2.0 新版功能.

违约: 'scrapy.resolver.CachingThreadedResolver'

用于解析DNS名称的类。违约 scrapy.resolver.CachingThreadedResolver 支持通过指定DNS请求的超时 DNS_TIMEOUT 设置,但仅适用于IPv4地址。Scrapy提供了另一种解决方案, scrapy.resolver.CachingHostnameResolver ,它支持IPv4/IPv6地址,但不使用 DNS_TIMEOUT 考虑在内。

DNS_TIMEOUT¶

违约: 60

处理DNS查询的超时(秒)。支持浮动。

DOWNLOADER¶

违约: 'scrapy.core.downloader.Downloader'

用于爬行的下载程序。

DOWNLOADER_HTTPCLIENTFACTORY¶

违约: 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

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

注解

现在很少使用HTTP/1.0,所以您可以安全地忽略此设置,除非您确实想使用HTTP/1.0并重写 DOWNLOAD_HANDLERS 对于 http(s) 相应的计划,即 'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler' .

DOWNLOADER_CLIENTCONTEXTFACTORY¶

违约: 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

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

这里,“ContextFactory”是一个用于SSL/TLS上下文的扭曲术语,它定义了要使用的TLS/SSL协议版本,无论是进行证书验证,还是甚至启用客户端身份验证(以及其他各种事情)。

注解

剪贴默认上下文工厂 不执行远程服务器证书验证 . 这通常对爬取Web很好。

如果您确实需要启用远程服务器证书验证,scrapy还可以设置另一个上下文工厂类, 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory' ,它使用平台的证书来验证远程端点。

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

DOWNLOADER_CLIENT_TLS_CIPHERS¶

违约: 'DEFAULT'

使用此设置可自定义默认HTTP/1.1下载器使用的TLS/SSL密码。

该设置应包含 OpenSSL cipher list format ,这些密码将用作客户端密码。更改此设置可能是访问某些HTTPS网站所必需的:例如,您可能需要使用 'DEFAULT:!DH' 对于DH参数较弱的网站,或启用未包含在中的特定密码 DEFAULT 如果网站需要的话。

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( 未推荐的

DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING¶

违约: False

设置为 True 将在建立HTTPS连接后启用有关TLS连接参数的调试级别消息。记录的信息类型取决于openssl和pyopenssl的版本。

此设置仅用于默认 DOWNLOADER_CLIENTCONTEXTFACTORY .

DOWNLOADER_MIDDLEWARES¶

违约:: {{}}

包含项目中启用的下载器中间软件及其订单的dict。有关详细信息,请参阅 激活下载器中间件 .

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,
}

包含默认在scrappy中启用的下载器中间软件的dict。低阶更接近引擎,高阶更接近下载器。您不应该在项目中修改此设置,请修改 DOWNLOADER_MIDDLEWARES 相反。有关详细信息,请参阅 激活下载器中间件 .

DOWNLOADER_STATS¶

违约: True

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

DOWNLOAD_DELAY¶

违约: 0

下载者从同一网站下载连续页面之前应等待的时间(以秒计)。这可以用来限制爬行速度,以避免对服务器造成太大的冲击。支持十进制数。例子::

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

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

什么时候? CONCURRENT_REQUESTS_PER_IP 为非零,每个IP地址而不是每个域强制延迟。

您还可以通过设置每个蜘蛛更改此设置 download_delay 蜘蛛属性。

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',
}

包含在scrappy中默认启用的请求下载处理程序的dict。您不应该在项目中修改此设置,请修改 DOWNLOAD_HANDLERS 相反。

您可以通过分配 None 到他们的URI方案 DOWNLOAD_HANDLERS . 例如,要禁用内置的ftp处理程序(不替换),请将其放入 settings.py ::

DOWNLOAD_HANDLERS = {
'ftp': None,
}

DOWNLOAD_TIMEOUT¶

违约: 180

下载程序在超时前等待的时间(以秒计)。

注解

可以使用以下方法设置每个蜘蛛的超时 download_timeout 蜘蛛属性和每个请求使用 download_timeout request.meta键。

DOWNLOAD_MAXSIZE¶

违约: 1073741824 (1024MB)

下载程序将下载的最大响应大小(字节)。

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

注解

此尺寸可通过使用 download_maxsize 蜘蛛属性和每个请求使用 download_maxsize request.meta键。

DOWNLOAD_WARNSIZE¶

违约: 33554432 (32 MB)

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

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

注解

此尺寸可通过使用 download_warnsize 蜘蛛属性和每个请求使用 download_warnsize request.meta键。

DOWNLOAD_FAIL_ON_DATALOSS¶

违约: True

是否在错误的响应上失败,也就是说,声明 Content-Length 与服务器发送的内容不匹配,或者分块响应未正确完成。如果 True ,这些反应引发了 ResponseFailed([_DataLoss]) 错误。如果 False ,这些响应将传递给 dataloss 添加到响应中,即: 'dataloss' in response.flagsTrue .

或者,可以通过使用 download_fail_on_dataloss 请求.meta键 False .

注解

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

DUPEFILTER_CLASS¶

违约: 'scrapy.dupefilters.RFPDupeFilter'

用于检测和筛选重复请求的类。

默认值 (RFPDupeFilter )根据请求指纹使用 scrapy.utils.request.request_fingerprint 功能。为了更改检查重复项的方式,可以将 RFPDupeFilter 并覆盖其 request_fingerprint 方法。这个方法应该接受slapy Request 对象并返回其指纹(字符串)。

您可以通过设置禁用重复请求的筛选 DUPEFILTER_CLASS'scrapy.dupefilters.BaseDupeFilter' . 但是要非常小心,因为您可以进入爬行循环。通常设置 dont_filter 参数到 True 论具体 Request 这不应该被过滤。

DUPEFILTER_DEBUG¶

违约: False

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

EDITOR¶

违约: vi (在UNIX系统上)或空闲编辑器(在Windows上)

用于编辑蜘蛛的编辑器 edit 命令。此外,如果 EDITOR 设置了环境变量, edit 命令将优先于默认设置。

EXTENSIONS¶

违约:: {{}}

包含项目中启用的扩展及其顺序的dict。

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,
}

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

有关更多信息,请参阅 extensions user guide 以及 list of available extensions .

FEED_TEMPDIR¶

feed temp目录允许您设置自定义文件夹,以便在上载之前保存crawler临时文件 FTP feed storageAmazon S3 .

FEED_STORAGE_GCS_ACL¶

将项存储到中时使用的访问控制列表(ACL) Google Cloud Storage . 有关如何设置此值的详细信息,请参阅列 JSON API 在里面 Google Cloud documentation .

FTP_PASSIVE_MODE¶

违约: True

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

FTP_PASSWORD¶

违约: "guest"

当没有ftp连接时用于ftp连接的密码 "ftp_password" 在里面 Request 元。

注解

释义 RFC 1635 尽管匿名ftp通常使用密码“guest”或电子邮件地址,但有些ftp服务器明确要求用户的电子邮件地址,不允许使用“guest”密码登录。

FTP_USER¶

违约: "anonymous"

当没有ftp连接时用于ftp连接的用户名 "ftp_user" 在里面 Request 元。

GCS_PROJECT_ID¶

违约: None

在上存储数据时将使用的项目ID Google Cloud Storage .

ITEM_PIPELINES¶

违约: {{}}

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

例子::

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

ITEM_PIPELINES_BASE¶

违约: {{}}

包含默认情况下在Scrapy中启用的管道的dict。您不应该在项目中修改此设置,请修改 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'

用于格式化日期/时间的字符串,扩展 %(asctime)s 占位符 LOG_FORMAT . 参考 Python datetime documentation 对于可用指令的整个列表。

LOG_FORMATTER¶

违约: scrapy.logformatter.LogFormatter

用于的类 formatting log messages 对于不同的行动。

LOG_LEVEL¶

违约: 'DEBUG'

要记录的最低级别。可用级别包括:严重、错误、警告、信息、调试。有关详细信息,请参阅 登录 .

LOG_STDOUT¶

违约: False

如果 True ,进程的所有标准输出(和错误)都将重定向到日志。例如,如果你 print('hello') 它会出现在残缺的木头上。

LOG_SHORT_NAMES¶

违约: False

如果 True 日志只包含根路径。如果设置为 False 然后显示负责日志输出的组件

LOGSTATS_INTERVAL¶

违约: 60.0

统计信息的每个日志打印输出之间的间隔(秒) LogStats .

MEMDEBUG_ENABLED¶

违约: False

是否启用内存调试。

MEMDEBUG_NOTIFY¶

违约: []

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

例子::

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED¶

违约: True

经营范围: scrapy.extensions.memusage

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

内存使用扩展 .

MEMUSAGE_LIMIT_MB¶

违约: 0

经营范围: scrapy.extensions.memusage

关闭scrappy前允许的最大内存量(以兆字节为单位)(如果memusage_enabled为true)。如果为零,则不执行任何检查。

内存使用扩展 .

MEMUSAGE_CHECK_INTERVAL_SECONDS¶

违约: 60.0

经营范围: scrapy.extensions.memusage

这个 Memory usage extension 检查当前内存使用情况,与 MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB ,以固定的时间间隔。

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

内存使用扩展 .

MEMUSAGE_NOTIFY_MAIL¶

违约: False

经营范围: scrapy.extensions.memusage

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

例子::

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

内存使用扩展 .

MEMUSAGE_WARNING_MB¶

违约: 0

经营范围: scrapy.extensions.memusage

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

NEWSPIDER_MODULE¶

违约: ''

模块在何处使用 genspider 命令。

例子::

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY¶

违约: True

如果启用,Scrapy将随机等待一段时间(0.5之间 * DOWNLOAD_DELAY and 1.5 * DOWNLOAD_DELAY )同时从同一网站获取请求。

这种随机化减少了爬虫被站点检测(并随后被阻止)的机会,这些站点分析请求,寻找它们请求之间的时间有统计学意义的相似性。

随机化策略与 wget --random-wait 选择权。

如果 DOWNLOAD_DELAY 为零(默认值)此选项无效。

REACTOR_THREADPOOL_MAXSIZE¶

违约: 10

扭曲反应器线程池大小的最大限制。这是各种 Scrapy 组件使用的通用多用途线程池。线程DNS解析器,blockingfeedstorage,s3filestore等等。如果遇到阻塞IO不足的问题,请增加此值。

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 命令。

ROBOTSTXT_PARSER¶

违约: 'scrapy.robotstxt.ProtegoRobotParser'

用于分析的分析器后端 robots.txt 文件夹。有关详细信息,请参阅 RobotsTxtMiddleware .

ROBOTSTXT_USER_AGENT¶

违约: None

中用于匹配的用户代理字符串机器人.txt文件。如果 None ,随请求或 USER_AGENT 设置(按该顺序)将用于确定要在中使用的用户代理机器人.txt文件。

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¶

违约: 'scrapy.pqueues.ScrapyPriorityQueue'

调度程序使用的优先级队列的类型。另一种可用类型是 scrapy.pqueues.DownloaderAwarePriorityQueue . scrapy.pqueues.DownloaderAwarePriorityQueuescrapy.pqueues.ScrapyPriorityQueue 当您并行地对许多不同的域进行爬网时。但目前 scrapy.pqueues.DownloaderAwarePriorityQueue 不与一起工作 CONCURRENT_REQUESTS_PER_IP .

SCRAPER_SLOT_MAX_ACTIVE_SIZE¶

2.0 新版功能.

违约: 5_000_000

正在处理的响应数据的软限制(字节)。

当正在处理的所有响应的大小之和大于此值时,Scrapy不处理新请求。

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'

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

SPIDER_LOADER_WARN_ONLY¶

违约: False

默认情况下,当Scrapy试图从 SPIDER_MODULES 如果有的话,它会很响地失效。 ImportError 例外。但是您可以选择沉默这个异常,并通过设置将它变成一个简单的警告 SPIDER_LOADER_WARN_ONLY = True .

注解

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

SPIDER_MIDDLEWARES¶

违约:: {{}}

包含项目中启用的蜘蛛中间件及其订单的dict。有关详细信息,请参阅 激活蜘蛛中间件 .

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中间件的dict,默认情况下在scrappy中启用,以及它们的顺序。低阶更接近发动机,高阶更接近蜘蛛。有关详细信息,请参阅 激活蜘蛛中间件 .

SPIDER_MODULES¶

违约: []

Scrapy将在其中查找蜘蛛的模块列表。

例子::

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

STATS_CLASS¶

违约: 'scrapy.statscollectors.MemoryStatsCollector'

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

STATS_DUMP¶

违约: True

转储 Scrapy stats (对着残破的木头)一旦蜘蛛完成。

有关详细信息,请参阅: 统计数据集合 .

STATSMAILER_RCPTS¶

违约: [] (空表)

蜘蛛完成爬取后发送残缺数据。见 StatsMailer 更多信息。

TELNETCONSOLE_ENABLED¶

违约: True

一个布尔值,指定 telnet console 将被启用(前提是它的扩展也被启用)。

TEMPLATES_DIR¶

违约: templates Scrapy 模块内部目录

创建新项目时要在其中查找模板的目录 startproject 命令和新蜘蛛 genspider 命令。

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

TWISTED_REACTOR¶

2.0 新版功能.

违约: None

给定的导入路径 reactor .

如果还没有安装其他反应器,比如当 scrapy 调用CLI程序或在使用 CrawlerProcess 班级。

如果您正在使用 CrawlerRunner 类,还需要手动安装正确的reactor。你可以用 install_reactor()

scrapy.utils.reactor.install_reactor(reactor_path, event_loop_path=None)[源代码]

安装 reactor 具有指定的导入路径。如果启用了asyncio reactor,还将使用指定的导入路径安装asyncio事件循环

如果已经安装了反应堆, install_reactor() 没有效果。

CrawlerRunner.__init__ 加薪 Exception 如果安装的反应堆与 TWISTED_REACTOR 设置;因此,具有顶层 reactor 项目文件中的导入和导入的第三方库将导致垃圾的增加 Exception 当它检查安装了哪个反应堆。

为了使用Scrapy安装的反应器:

import scrapy
from twisted.internet import reactor
class QuotesSpider(scrapy.Spider):
name = 'quotes'
def __init__(self, *args, **kwargs):
self.timeout = int(kwargs.pop('timeout', '60'))
super(QuotesSpider, self).__init__(*args, **kwargs)
def start_requests(self):
reactor.callLater(self.timeout, self.stop)
urls = ['http://quotes.toscrape.com/page/1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for quote in response.css('div.quote'):
yield {'text': quote.css('span.text::text').get()}
def stop(self):
self.crawler.engine.close_spider(self, 'timeout')

使 Exception ,变成:

import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
def __init__(self, *args, **kwargs):
self.timeout = int(kwargs.pop('timeout', '60'))
super(QuotesSpider, self).__init__(*args, **kwargs)
def start_requests(self):
from twisted.internet import reactor
reactor.callLater(self.timeout, self.stop)
urls = ['http://quotes.toscrape.com/page/1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for quote in response.css('div.quote'):
yield {'text': quote.css('span.text::text').get()}
def stop(self):
self.crawler.engine.close_spider(self, 'timeout')

的默认值 TWISTED_REACTOR 设置是 None ,这意味着Scrapy不会尝试安装任何特定的reactor,并且将使用Twisted为当前平台定义的默认reactor。这是为了保持向后兼容性,并避免使用非默认反应器可能导致的问题。

有关其他信息,请参阅 Choosing a Reactor and GUI Toolkit Integration .

URLLENGTH_LIMIT¶

违约: 2083

经营范围: spidermiddlewares.urllength

允许已爬网URL的最大URL长度。有关此设置的默认值的详细信息,请参阅:https://boutell.com/newfaq/misc/urllength.html

USER_AGENT¶

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

爬网时要使用的默认用户代理,除非被重写。此用户代理还由 RobotsTxtMiddleware 如果 ROBOTSTXT_USER_AGENT 设置是 None 并且没有为请求指定重写用户代理头。

其他地方记录的设置:¶

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

  • 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

  • FEEDS

  • FEED_EXPORTERS

  • FEED_EXPORTERS_BASE

  • FEED_EXPORT_BATCH_ITEM_COUNT

  • FEED_EXPORT_ENCODING

  • FEED_EXPORT_FIELDS

  • FEED_EXPORT_INDENT

  • FEED_STORAGES

  • FEED_STORAGES_BASE

  • FEED_STORAGE_FTP_ACTIVE

  • FEED_STORAGE_S3_ACL

  • FEED_STORE_EMPTY

  • FEED_URI_PARAMS

  • FILES_EXPIRES

  • FILES_RESULT_FIELD

  • FILES_STORE

  • FILES_STORE_GCS_ACL

  • 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

  • HTTPPROXY_ENABLED

  • IMAGES_EXPIRES

  • IMAGES_MIN_HEIGHT

  • IMAGES_MIN_WIDTH

  • IMAGES_RESULT_FIELD

  • IMAGES_STORE

  • IMAGES_STORE_GCS_ACL

  • 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_IGNORE_TAGS

  • METAREFRESH_MAXDELAY

  • REDIRECT_ENABLED

  • REDIRECT_MAX_TIMES

  • REFERER_ENABLED

  • REFERRER_POLICY

  • RETRY_ENABLED

  • RETRY_HTTP_CODES

  • RETRY_TIMES

  • TELNETCONSOLE_HOST

  • TELNETCONSOLE_PASSWORD

  • TELNETCONSOLE_PORT

  • TELNETCONSOLE_USERNAME

AWS_ACCESS_KEY_ID¶

违约: None

需要访问的代码使用的AWS访问密钥 Amazon Web services ,比如 S3 feed storage backend .

AWS_SECRET_ACCESS_KEY¶

违约: None

需要访问的代码使用的AWS密钥 Amazon Web services ,比如 S3 feed storage backend .

AWS_ENDPOINT_URL¶

违约: None

用于类似S3的存储的端点URL,例如Minio或S3.scality。

AWS_USE_SSL¶

违约: None

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

AWS_VERIFY¶

违约: None

验证scray和S3或类似S3的存储之间的SSL连接。默认情况下,将进行SSL验证。

AWS_REGION_NAME¶

违约: None

与AWS客户端关联的区域的名称。

ASYNCIO_EVENT_LOOP¶

违约: None

给定的异步事件循环类的导入路径。

如果启用了异步电抗器(请参阅 TWISTED_REACTOR )此设置可用于指定要与之一起使用的异步事件循环。将设置设置为所需的异步事件循环类的导入路径。如果设置为 None 将使用默认的异步事件循环。

如果要使用 install_reactor() 函数,可以使用 event_loop_path 参数指示要使用的事件循环类的导入路径。

请注意,事件循环类必须继承自 asyncio.AbstractEventLoop .

BOT_NAME¶

违约: 'scrapybot'

这个项目的名字叫Scrapy。此名称也将用于日志记录。

当您使用 startproject 命令。

CONCURRENT_ITEMS¶

违约: 100

中并行处理的最大并发项数(每个响应) item pipelines .

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'

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

DEFAULT_REQUEST_HEADERS¶

违约::

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

用于报废HTTP请求的默认头。他们住在 DefaultHeadersMiddleware .

DEPTH_LIMIT¶

违约: 0

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

允许对任何网站进行爬网的最大深度。如果为零,则不施加限制。

DEPTH_PRIORITY¶

违约: 0

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

用于调整 priority A的 Request 根据它的深度。

请求的优先级调整如下:

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

随着深度的增加,正值为 DEPTH_PRIORITY 降低请求优先级(BFO),而负值则提高请求优先级(DFO)。也见 Scrapy是以广度优先还是深度优先的顺序爬行? .

注解

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

DEPTH_STATS_VERBOSE¶

违约: False

经营范围: scrapy.spidermiddlewares.depth.DepthMiddleware

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

DNSCACHE_ENABLED¶

违约: True

是否启用DNS内存缓存。

DNSCACHE_SIZE¶

违约: 10000

DNS内存缓存大小。

DNS_RESOLVER¶

2.0 新版功能.

违约: 'scrapy.resolver.CachingThreadedResolver'

用于解析DNS名称的类。违约 scrapy.resolver.CachingThreadedResolver 支持通过指定DNS请求的超时 DNS_TIMEOUT 设置,但仅适用于IPv4地址。Scrapy提供了另一种解决方案, scrapy.resolver.CachingHostnameResolver ,它支持IPv4/IPv6地址,但不使用 DNS_TIMEOUT 考虑在内。

DNS_TIMEOUT¶

违约: 60

处理DNS查询的超时(秒)。支持浮动。

DOWNLOADER¶

违约: 'scrapy.core.downloader.Downloader'

用于爬行的下载程序。

DOWNLOADER_HTTPCLIENTFACTORY¶

违约: 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

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

注解

现在很少使用HTTP/1.0,所以您可以安全地忽略此设置,除非您确实想使用HTTP/1.0并重写 DOWNLOAD_HANDLERS 对于 http(s) 相应的计划,即 'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler' .

DOWNLOADER_CLIENTCONTEXTFACTORY¶

违约: 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

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

这里,“ContextFactory”是一个用于SSL/TLS上下文的扭曲术语,它定义了要使用的TLS/SSL协议版本,无论是进行证书验证,还是甚至启用客户端身份验证(以及其他各种事情)。

注解

剪贴默认上下文工厂 不执行远程服务器证书验证 . 这通常对爬取Web很好。

如果您确实需要启用远程服务器证书验证,scrapy还可以设置另一个上下文工厂类, 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory' ,它使用平台的证书来验证远程端点。

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

DOWNLOADER_CLIENT_TLS_CIPHERS¶

违约: 'DEFAULT'

使用此设置可自定义默认HTTP/1.1下载器使用的TLS/SSL密码。

该设置应包含 OpenSSL cipher list format ,这些密码将用作客户端密码。更改此设置可能是访问某些HTTPS网站所必需的:例如,您可能需要使用 'DEFAULT:!DH' 对于DH参数较弱的网站,或启用未包含在中的特定密码 DEFAULT 如果网站需要的话。

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( 未推荐的

DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING¶

违约: False

设置为 True 将在建立HTTPS连接后启用有关TLS连接参数的调试级别消息。记录的信息类型取决于openssl和pyopenssl的版本。

此设置仅用于默认 DOWNLOADER_CLIENTCONTEXTFACTORY .

DOWNLOADER_MIDDLEWARES¶

违约:: {{}}

包含项目中启用的下载器中间软件及其订单的dict。有关详细信息,请参阅 激活下载器中间件 .

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,
}

包含默认在scrappy中启用的下载器中间软件的dict。低阶更接近引擎,高阶更接近下载器。您不应该在项目中修改此设置,请修改 DOWNLOADER_MIDDLEWARES 相反。有关详细信息,请参阅 激活下载器中间件 .

DOWNLOADER_STATS¶

违约: True

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

DOWNLOAD_DELAY¶

违约: 0

下载者从同一网站下载连续页面之前应等待的时间(以秒计)。这可以用来限制爬行速度,以避免对服务器造成太大的冲击。支持十进制数。例子::

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

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

什么时候? CONCURRENT_REQUESTS_PER_IP 为非零,每个IP地址而不是每个域强制延迟。

您还可以通过设置每个蜘蛛更改此设置 download_delay 蜘蛛属性。

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',
}

包含在scrappy中默认启用的请求下载处理程序的dict。您不应该在项目中修改此设置,请修改 DOWNLOAD_HANDLERS 相反。

您可以通过分配 None 到他们的URI方案 DOWNLOAD_HANDLERS . 例如,要禁用内置的ftp处理程序(不替换),请将其放入 settings.py ::

DOWNLOAD_HANDLERS = {
'ftp': None,
}

DOWNLOAD_TIMEOUT¶

违约: 180

下载程序在超时前等待的时间(以秒计)。

注解

可以使用以下方法设置每个蜘蛛的超时 download_timeout 蜘蛛属性和每个请求使用 download_timeout request.meta键。

DOWNLOAD_MAXSIZE¶

违约: 1073741824 (1024MB)

下载程序将下载的最大响应大小(字节)。

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

注解

此尺寸可通过使用 download_maxsize 蜘蛛属性和每个请求使用 download_maxsize request.meta键。

DOWNLOAD_WARNSIZE¶

违约: 33554432 (32 MB)

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

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

注解

此尺寸可通过使用 download_warnsize 蜘蛛属性和每个请求使用 download_warnsize request.meta键。

DOWNLOAD_FAIL_ON_DATALOSS¶

违约: True

是否在错误的响应上失败,也就是说,声明 Content-Length 与服务器发送的内容不匹配,或者分块响应未正确完成。如果 True ,这些反应引发了 ResponseFailed([_DataLoss]) 错误。如果 False ,这些响应将传递给 dataloss 添加到响应中,即: 'dataloss' in response.flagsTrue .

或者,可以通过使用 download_fail_on_dataloss 请求.meta键 False .

注解

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

DUPEFILTER_CLASS¶

违约: 'scrapy.dupefilters.RFPDupeFilter'

用于检测和筛选重复请求的类。

默认值 (RFPDupeFilter )根据请求指纹使用 scrapy.utils.request.request_fingerprint 功能。为了更改检查重复项的方式,可以将 RFPDupeFilter 并覆盖其 request_fingerprint 方法。这个方法应该接受slapy Request 对象并返回其指纹(字符串)。

您可以通过设置禁用重复请求的筛选 DUPEFILTER_CLASS'scrapy.dupefilters.BaseDupeFilter' . 但是要非常小心,因为您可以进入爬行循环。通常设置 dont_filter 参数到 True 论具体 Request 这不应该被过滤。

DUPEFILTER_DEBUG¶

违约: False

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

EDITOR¶

违约: vi (在UNIX系统上)或空闲编辑器(在Windows上)

用于编辑蜘蛛的编辑器 edit 命令。此外,如果 EDITOR 设置了环境变量, edit 命令将优先于默认设置。

EXTENSIONS¶

违约:: {{}}

包含项目中启用的扩展及其顺序的dict。

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,
}

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

有关更多信息,请参阅 extensions user guide 以及 list of available extensions .

FEED_TEMPDIR¶

feed temp目录允许您设置自定义文件夹,以便在上载之前保存crawler临时文件 FTP feed storageAmazon S3 .

FEED_STORAGE_GCS_ACL¶

将项存储到中时使用的访问控制列表(ACL) Google Cloud Storage . 有关如何设置此值的详细信息,请参阅列 JSON API 在里面 Google Cloud documentation .

FTP_PASSIVE_MODE¶

违约: True

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

FTP_PASSWORD¶

违约: "guest"

当没有ftp连接时用于ftp连接的密码 "ftp_password" 在里面 Request 元。

注解

释义 RFC 1635 尽管匿名ftp通常使用密码“guest”或电子邮件地址,但有些ftp服务器明确要求用户的电子邮件地址,不允许使用“guest”密码登录。

FTP_USER¶

违约: "anonymous"

当没有ftp连接时用于ftp连接的用户名 "ftp_user" 在里面 Request 元。

GCS_PROJECT_ID¶

违约: None

在上存储数据时将使用的项目ID Google Cloud Storage .

ITEM_PIPELINES¶

违约: {{}}

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

例子::

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

ITEM_PIPELINES_BASE¶

违约: {{}}

包含默认情况下在Scrapy中启用的管道的dict。您不应该在项目中修改此设置,请修改 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'

用于格式化日期/时间的字符串,扩展 %(asctime)s 占位符 LOG_FORMAT . 参考 Python datetime documentation 对于可用指令的整个列表。

LOG_FORMATTER¶

违约: scrapy.logformatter.LogFormatter

用于的类 formatting log messages 对于不同的行动。

LOG_LEVEL¶

违约: 'DEBUG'

要记录的最低级别。可用级别包括:严重、错误、警告、信息、调试。有关详细信息,请参阅 登录 .

LOG_STDOUT¶

违约: False

如果 True ,进程的所有标准输出(和错误)都将重定向到日志。例如,如果你 print('hello') 它会出现在残缺的木头上。

LOG_SHORT_NAMES¶

违约: False

如果 True 日志只包含根路径。如果设置为 False 然后显示负责日志输出的组件

LOGSTATS_INTERVAL¶

违约: 60.0

统计信息的每个日志打印输出之间的间隔(秒) LogStats .

MEMDEBUG_ENABLED¶

违约: False

是否启用内存调试。

MEMDEBUG_NOTIFY¶

违约: []

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

例子::

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED¶

违约: True

经营范围: scrapy.extensions.memusage

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

内存使用扩展 .

MEMUSAGE_LIMIT_MB¶

违约: 0

经营范围: scrapy.extensions.memusage

关闭scrappy前允许的最大内存量(以兆字节为单位)(如果memusage_enabled为true)。如果为零,则不执行任何检查。

内存使用扩展 .

MEMUSAGE_CHECK_INTERVAL_SECONDS¶

违约: 60.0

经营范围: scrapy.extensions.memusage

这个 Memory usage extension 检查当前内存使用情况,与 MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB ,以固定的时间间隔。

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

内存使用扩展 .

MEMUSAGE_NOTIFY_MAIL¶

违约: False

经营范围: scrapy.extensions.memusage

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

例子::

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

内存使用扩展 .

MEMUSAGE_WARNING_MB¶

违约: 0

经营范围: scrapy.extensions.memusage

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

NEWSPIDER_MODULE¶

违约: ''

模块在何处使用 genspider 命令。

例子::

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY¶

违约: True

如果启用,Scrapy将随机等待一段时间(0.5之间 * DOWNLOAD_DELAY and 1.5 * DOWNLOAD_DELAY )同时从同一网站获取请求。

这种随机化减少了爬虫被站点检测(并随后被阻止)的机会,这些站点分析请求,寻找它们请求之间的时间有统计学意义的相似性。

随机化策略与 wget --random-wait 选择权。

如果 DOWNLOAD_DELAY 为零(默认值)此选项无效。

REACTOR_THREADPOOL_MAXSIZE¶

违约: 10

扭曲反应器线程池大小的最大限制。这是各种 Scrapy 组件使用的通用多用途线程池。线程DNS解析器,blockingfeedstorage,s3filestore等等。如果遇到阻塞IO不足的问题,请增加此值。

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 命令。

ROBOTSTXT_PARSER¶

违约: 'scrapy.robotstxt.ProtegoRobotParser'

用于分析的分析器后端 robots.txt 文件夹。有关详细信息,请参阅 RobotsTxtMiddleware .

ROBOTSTXT_USER_AGENT¶

违约: None

中用于匹配的用户代理字符串机器人.txt文件。如果 None ,随请求或 USER_AGENT 设置(按该顺序)将用于确定要在中使用的用户代理机器人.txt文件。

ROBOTSTXT_USER_AGENT¶

违约: None

中用于匹配的用户代理字符串机器人.txt文件。如果 None ,随请求或 USER_AGENT 设置(按该顺序)将用于确定要在中使用的用户代理机器人.txt文件。

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¶

违约: 'scrapy.pqueues.ScrapyPriorityQueue'

调度程序使用的优先级队列的类型。另一种可用类型是 scrapy.pqueues.DownloaderAwarePriorityQueue . scrapy.pqueues.DownloaderAwarePriorityQueuescrapy.pqueues.ScrapyPriorityQueue 当您并行地对许多不同的域进行爬网时。但目前 scrapy.pqueues.DownloaderAwarePriorityQueue 不与一起工作 CONCURRENT_REQUESTS_PER_IP .

SCRAPER_SLOT_MAX_ACTIVE_SIZE¶

2.0 新版功能.

违约: 5_000_000

正在处理的响应数据的软限制(字节)。

当正在处理的所有响应的大小之和大于此值时,Scrapy不处理新请求。

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'

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

SPIDER_LOADER_WARN_ONLY¶

违约: False

默认情况下,当Scrapy试图从 SPIDER_MODULES 如果有的话,它会很响地失效。 ImportError 例外。但是您可以选择沉默这个异常,并通过设置将它变成一个简单的警告 SPIDER_LOADER_WARN_ONLY = True .

注解

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

SPIDER_MIDDLEWARES¶

违约:: {{}}

包含项目中启用的蜘蛛中间件及其订单的dict。有关详细信息,请参阅 激活蜘蛛中间件 .

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中间件的dict,默认情况下在scrappy中启用,以及它们的顺序。低阶更接近发动机,高阶更接近蜘蛛。有关详细信息,请参阅 激活蜘蛛中间件 .

SPIDER_MODULES¶

违约: []

Scrapy将在其中查找蜘蛛的模块列表。

例子::

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

STATS_CLASS¶

违约: 'scrapy.statscollectors.MemoryStatsCollector'

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

STATS_DUMP¶

违约: True

转储 Scrapy stats (对着残破的木头)一旦蜘蛛完成。

有关详细信息,请参阅: 统计数据集合 .

STATSMAILER_RCPTS¶

违约: [] (空表)

蜘蛛完成爬取后发送残缺数据。见 StatsMailer 更多信息。

TELNETCONSOLE_ENABLED¶

违约: True

一个布尔值,指定 telnet console 将被启用(前提是它的扩展也被启用)。

TEMPLATES_DIR¶

违约: templates Scrapy 模块内部目录

创建新项目时要在其中查找模板的目录 startproject 命令和新蜘蛛 genspider 命令。

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

TWISTED_REACTOR¶

2.0 新版功能.

违约: None

给定的导入路径 reactor .

如果还没有安装其他反应器,比如当 scrapy 调用CLI程序或在使用 CrawlerProcess 班级。

如果您正在使用 CrawlerRunner 类,还需要手动安装正确的reactor。你可以用 install_reactor()

scrapy.utils.reactor.install_reactor(reactor_path, event_loop_path=None)[源代码]

安装 reactor 具有指定的导入路径。如果启用了asyncio reactor,还将使用指定的导入路径安装asyncio事件循环

如果已经安装了反应堆, install_reactor() 没有效果。

CrawlerRunner.__init__ 加薪 Exception 如果安装的反应堆与 TWISTED_REACTOR 设置;因此,具有顶层 reactor 项目文件中的导入和导入的第三方库将导致垃圾的增加 Exception 当它检查安装了哪个反应堆。

为了使用Scrapy安装的反应器:

import scrapy
from twisted.internet import reactor
class QuotesSpider(scrapy.Spider):
name = 'quotes'
def __init__(self, *args, **kwargs):
self.timeout = int(kwargs.pop('timeout', '60'))
super(QuotesSpider, self).__init__(*args, **kwargs)
def start_requests(self):
reactor.callLater(self.timeout, self.stop)
urls = ['http://quotes.toscrape.com/page/1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for quote in response.css('div.quote'):
yield {'text': quote.css('span.text::text').get()}
def stop(self):
self.crawler.engine.close_spider(self, 'timeout')

使 Exception ,变成:

import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
def __init__(self, *args, **kwargs):
self.timeout = int(kwargs.pop('timeout', '60'))
super(QuotesSpider, self).__init__(*args, **kwargs)
def start_requests(self):
from twisted.internet import reactor
reactor.callLater(self.timeout, self.stop)
urls = ['http://quotes.toscrape.com/page/1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for quote in response.css('div.quote'):
yield {'text': quote.css('span.text::text').get()}
def stop(self):
self.crawler.engine.close_spider(self, 'timeout')

的默认值 TWISTED_REACTOR 设置是 None ,这意味着Scrapy不会尝试安装任何特定的reactor,并且将使用Twisted为当前平台定义的默认reactor。这是为了保持向后兼容性,并避免使用非默认反应器可能导致的问题。

有关其他信息,请参阅 Choosing a Reactor and GUI Toolkit Integration .

URLLENGTH_LIMIT¶

违约: 2083

经营范围: spidermiddlewares.urllength

允许已爬网URL的最大URL长度。有关此设置的默认值的详细信息,请参阅:https://boutell.com/newfaq/misc/urllength.html

USER_AGENT¶

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

爬网时要使用的默认用户代理,除非被重写。此用户代理还由 RobotsTxtMiddleware 如果 ROBOTSTXT_USER_AGENT 设置是 None 并且没有为请求指定重写用户代理头。

其他地方记录的设置:¶

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

  • 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

  • FEEDS

  • FEED_EXPORTERS

  • FEED_EXPORTERS_BASE

  • FEED_EXPORT_BATCH_ITEM_COUNT

  • FEED_EXPORT_ENCODING

  • FEED_EXPORT_FIELDS

  • FEED_EXPORT_INDENT

  • FEED_STORAGES

  • FEED_STORAGES_BASE

  • FEED_STORAGE_FTP_ACTIVE

  • FEED_STORAGE_S3_ACL

  • FEED_STORE_EMPTY

  • FEED_URI_PARAMS

  • FILES_EXPIRES

  • FILES_RESULT_FIELD

  • FILES_STORE

  • FILES_STORE_GCS_ACL

  • 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

  • HTTPPROXY_ENABLED

  • IMAGES_EXPIRES

  • IMAGES_MIN_HEIGHT

  • IMAGES_MIN_WIDTH

  • IMAGES_RESULT_FIELD

  • IMAGES_STORE

  • IMAGES_STORE_GCS_ACL

  • 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_IGNORE_TAGS

  • METAREFRESH_MAXDELAY

  • REDIRECT_ENABLED

  • REDIRECT_MAX_TIMES

  • REFERER_ENABLED

  • REFERRER_POLICY

  • RETRY_ENABLED

  • RETRY_HTTP_CODES

  • RETRY_TIMES

  • TELNETCONSOLE_HOST

  • TELNETCONSOLE_PASSWORD

  • TELNETCONSOLE_PORT

  • TELNETCONSOLE_USERNAME

以上是Scrapy – 设置的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>