核心 API

本节介绍了 Scrapy 核心 API,适用于扩展和中间件的开发者。

爬虫 API

Scrapy API 的主要入口点是 Crawler 对象,组件可以通过它获取以进行初始化。它提供对所有 Scrapy 核心组件的访问,也是组件访问并将其功能挂接到 Scrapy 的唯一方式。

扩展管理器负责加载和跟踪已安装的扩展,并通过 EXTENSIONS 设置进行配置,该设置包含一个字典,其中列出了所有可用的扩展及其顺序,类似于您配置下载器中间件的方式。

class scrapy.crawler.Crawler(spidercls: type[Spider], settings: dict[str, Any] | Settings | None = None, init_reactor: bool = False)[source]

Crawler 对象必须使用 scrapy.Spider 子类和 scrapy.settings.Settings 对象进行实例化。

request_fingerprinter

此爬虫的请求指纹生成器。

扩展和中间件使用它来为请求构建简短、唯一的标识符。参见请求指纹

settings

此爬虫的设置管理器。

扩展和中间件使用它来访问此爬虫的 Scrapy 设置。

有关 Scrapy 设置的介绍,请参见设置

有关 API,请参见 Settings 类。

signals

此爬虫的信号管理器。

扩展和中间件使用它来将自身挂接到 Scrapy 功能中。

有关信号的介绍,请参见信号

有关 API,请参见 SignalManager 类。

stats

此爬虫的统计收集器。

扩展和中间件使用它来记录其行为的统计数据,或访问其他扩展收集的统计数据。

有关统计数据收集的介绍,请参见统计数据收集

有关 API,请参见 StatsCollector 类。

extensions

跟踪已启用扩展的扩展管理器。

大多数扩展不需要访问此属性。

有关扩展的介绍以及 Scrapy 上可用扩展的列表,请参见扩展

engine

执行引擎,协调调度器、下载器和爬虫之间的核心爬取逻辑。

某些扩展可能需要访问 Scrapy 引擎,以检查或修改下载器和调度器的行为,尽管这是一种高级用法,并且此 API 尚未稳定。

spider

当前正在爬取的爬虫。这是在构建爬虫时提供的爬虫类的实例,并在 crawl() 方法中给定参数后创建。

async crawl_async(*args: Any, **kwargs: Any) None[source]

通过使用给定的 argskwargs 参数实例化其爬虫类来启动爬虫,同时启动执行引擎。应仅调用一次。

2.14 版本中新增。

爬取完成后完成。

crawl(*args: Any, **kwargs: Any) Generator[Deferred[Any], Any, None][source]

通过使用给定的 argskwargs 参数实例化其爬虫类来启动爬虫,同时启动执行引擎。应仅调用一次。

返回一个当爬取完成时触发的 deferred 对象。

async stop_async() None[source]

启动爬虫的优雅停止,并在爬虫停止时完成。

2.14 版本中新增。

stop() Deferred[None][source]

启动爬虫的优雅停止,并返回一个当爬虫停止时触发的 deferred 对象。

get_addon(cls: type[_T]) _T | None[source]

返回指定类或子类的附加组件的运行时实例,如果未找到则返回 None

在 2.12 版本中添加。

get_downloader_middleware(cls: type[_T]) _T | None[source]

返回指定类或子类的下载器中间件的运行时实例,如果未找到则返回 None

在 2.12 版本中添加。

此方法只能在爬取引擎创建后调用,例如在信号 engine_startedspider_opened 处。

get_extension(cls: type[_T]) _T | None[source]

返回指定类或子类的扩展的运行时实例,如果未找到则返回 None

在 2.12 版本中添加。

此方法只能在扩展管理器创建后调用,例如在信号 engine_startedspider_opened 处。

get_item_pipeline(cls: type[_T]) _T | None[source]

返回指定类或子类的项目管道的运行时实例,如果未找到则返回 None

在 2.12 版本中添加。

此方法只能在爬取引擎创建后调用,例如在信号 engine_startedspider_opened 处。

get_spider_middleware(cls: type[_T]) _T | None[source]

返回指定类或子类的爬虫中间件的运行时实例,如果未找到则返回 None

在 2.12 版本中添加。

此方法只能在爬取引擎创建后调用,例如在信号 engine_startedspider_opened 处。

class scrapy.crawler.AsyncCrawlerRunner(settings: dict[str, Any] | Settings | None = None)[source]

这是一个方便的辅助类,用于在已设置的 reactor 或 asyncio 事件循环中跟踪、管理和运行爬虫。

AsyncCrawlerRunner 对象必须使用 Settings 对象进行实例化。

TWISTED_REACTOR_ENABLED 设置为 True 时,此类别要求安装并使用 reactor;否则,它要求不安装 reactor 但要求安装并使用 asyncio 事件循环。

除非编写手动处理爬取过程的脚本,否则不需要此类(因为 Scrapy 负责相应地使用它)。有关示例,请参见从脚本运行 Scrapy

此类提供协程 API。当与 reactor 一起使用时,它需要 AsyncioSelectorReactor

crawl(crawler_or_spidercls: type[Spider] | str | Crawler, *args: Any, **kwargs: Any) Task[None][source]

使用提供的参数运行爬虫。

它将调用给定 Crawler 的 crawl_async() 方法,同时跟踪它,以便稍后可以停止。

如果 crawler_or_spidercls 不是 Crawler 实例,此方法将尝试使用此参数作为给定的爬虫类来创建一个。

返回一个 Task 对象,该对象在爬取完成后完成。

参数:
  • crawler_or_spidercls (Crawler 实例、Spider 子类或字符串) – 已创建的爬虫,或项目中的爬虫类或爬虫名称以创建它

  • args – 初始化爬虫的参数

  • kwargs – 初始化爬虫的关键字参数

async join() None[source]

当所有受管理的 crawlers 完成执行时完成。

async stop() None[source]

同时停止所有正在进行的爬取作业。

当它们全部结束后完成。

class scrapy.crawler.CrawlerRunner(settings: dict[str, Any] | Settings | None = None)[source]

这是一个方便的辅助类,用于在已设置的 reactor 中跟踪、管理和运行爬虫。

CrawlerRunner 对象必须使用 Settings 对象进行实例化。

除非编写手动处理爬取过程的脚本,否则不需要此类(因为 Scrapy 负责相应地使用它)。有关示例,请参见从脚本运行 Scrapy

此类提供基于 Deferred 的 API。对于现代协程 API,请使用 AsyncCrawlerRunner

crawl(crawler_or_spidercls: type[Spider] | str | Crawler, *args: Any, **kwargs: Any) Deferred[None][source]

使用提供的参数运行爬虫。

它将调用给定 Crawler 的 crawl() 方法,同时跟踪它,以便稍后可以停止。

如果 crawler_or_spidercls 不是 Crawler 实例,此方法将尝试使用此参数作为给定的爬虫类来创建一个。

返回一个当爬取完成时触发的 deferred 对象。

参数:
  • crawler_or_spidercls (Crawler 实例、Spider 子类或字符串) – 已创建的爬虫,或项目中的爬虫类或爬虫名称以创建它

  • args – 初始化爬虫的参数

  • kwargs – 初始化爬虫的关键字参数

join()[source]

返回一个当所有受管理的 crawlers 完成执行时触发的 deferred 对象。

stop() Deferred[Any][source]

同时停止所有正在进行的爬取作业。

返回一个当它们全部结束后触发的 deferred 对象。

class scrapy.crawler.AsyncCrawlerProcess(settings: dict[str, Any] | Settings | None = None, install_root_handler: bool = True)[source]

基类:CrawlerProcessBase, AsyncCrawlerRunner

一个用于在单个进程中同时运行多个 Scrapy 爬虫的类。

此类扩展了 AsyncCrawlerRunner,增加了启动 reactor 和处理关闭信号(如键盘中断命令 Ctrl-C)的支持。它还配置了顶层日志记录。

如果您不在应用程序中运行另一个 reactor,此工具比 AsyncCrawlerRunner 更适用。

AsyncCrawlerProcess 对象必须使用 Settings 对象进行实例化。

TWISTED_REACTOR_ENABLED 设置为 True 时,此类别将安装并使用 reactor;否则,它要求不安装 reactor 但会安装并使用 asyncio 事件循环。

参数:

install_root_handler – 是否安装根日志处理程序(默认值:True)

除非编写手动处理爬取过程的脚本,否则不需要此类(因为 Scrapy 负责相应地使用它)。有关示例,请参见从脚本运行 Scrapy

此类提供协程 API。当与 reactor 一起使用时,它需要 AsyncioSelectorReactor

crawl(crawler_or_spidercls: type[Spider] | str | Crawler, *args: Any, **kwargs: Any) Task[None]

使用提供的参数运行爬虫。

它将调用给定 Crawler 的 crawl_async() 方法,同时跟踪它,以便稍后可以停止。

如果 crawler_or_spidercls 不是 Crawler 实例,此方法将尝试使用此参数作为给定的爬虫类来创建一个。

返回一个 Task 对象,该对象在爬取完成后完成。

参数:
  • crawler_or_spidercls (Crawler 实例、Spider 子类或字符串) – 已创建的爬虫,或项目中的爬虫类或爬虫名称以创建它

  • args – 初始化爬虫的参数

  • kwargs – 初始化爬虫的关键字参数

property crawlers: set[Crawler]

crawl() 启动并由此类管理的 crawlers 集合。

create_crawler(crawler_or_spidercls: type[Spider] | str | Crawler) Crawler

返回一个 Crawler 对象。

  • 如果 crawler_or_spidercls 是一个 Crawler,则运行器的设置将作为默认值合并到其中:对于每个设置,只有当 Crawler 尚未以相等或更高优先级拥有该设置时,才应用运行器的值。然后返回该 Crawler。

  • 如果 crawler_or_spidercls 是一个 Spider 子类,则使用此运行器的设置为其构造一个新的 Crawler。

  • 如果 crawler_or_spidercls 是一个字符串,此函数将在 Scrapy 项目中(使用爬虫加载器)查找具有此名称的爬虫,然后为其创建一个 Crawler 实例。

async join() None

当所有受管理的 crawlers 完成执行时完成。

start(stop_after_crawl: bool = True, install_signal_handlers: bool = True) None[source]

此方法启动一个 reactor 或 asyncio 事件循环,具体取决于 TWISTED_REACTOR_ENABLED 设置的值。

当使用 reactor 时,它会将其池大小调整为 REACTOR_THREADPOOL_MAXSIZE,并根据 TWISTED_DNS_RESOLVER 安装一个 DNS 解析器。

如果 stop_after_crawl 为 True,则在所有爬虫完成后,将使用 join() 停止 reactor/事件循环。

参数:
  • stop_after_crawl (布尔值) – 当所有爬虫完成后是否停止 reactor

  • install_signal_handlers (布尔值) – 是否安装来自 Twisted 和 Scrapy 的操作系统信号处理程序(默认值:True)

async stop() None

同时停止所有正在进行的爬取作业。

当它们全部结束后完成。

class scrapy.crawler.CrawlerProcess(settings: dict[str, Any] | Settings | None = None, install_root_handler: bool = True)[source]

基类:CrawlerProcessBase, CrawlerRunner

一个用于在单个进程中同时运行多个 Scrapy 爬虫的类。

此类扩展了 CrawlerRunner,增加了启动 reactor 和处理关闭信号(如键盘中断命令 Ctrl-C)的支持。它还配置了顶层日志记录。

如果您不在应用程序中运行另一个 reactor,此工具比 CrawlerRunner 更适用。

CrawlerProcess 对象必须使用 Settings 对象进行实例化。

参数:

install_root_handler – 是否安装根日志处理程序(默认值:True)

除非编写手动处理爬取过程的脚本,否则不需要此类(因为 Scrapy 负责相应地使用它)。有关示例,请参见从脚本运行 Scrapy

此类提供基于 Deferred 的 API。对于现代协程 API,请使用 AsyncCrawlerProcess

crawl(crawler_or_spidercls: type[Spider] | str | Crawler, *args: Any, **kwargs: Any) Deferred[None]

使用提供的参数运行爬虫。

它将调用给定 Crawler 的 crawl() 方法,同时跟踪它,以便稍后可以停止。

如果 crawler_or_spidercls 不是 Crawler 实例,此方法将尝试使用此参数作为给定的爬虫类来创建一个。

返回一个当爬取完成时触发的 deferred 对象。

参数:
  • crawler_or_spidercls (Crawler 实例、Spider 子类或字符串) – 已创建的爬虫,或项目中的爬虫类或爬虫名称以创建它

  • args – 初始化爬虫的参数

  • kwargs – 初始化爬虫的关键字参数

property crawlers: set[Crawler]

crawl() 启动并由此类管理的 crawlers 集合。

create_crawler(crawler_or_spidercls: type[Spider] | str | Crawler) Crawler

返回一个 Crawler 对象。

  • 如果 crawler_or_spidercls 是一个 Crawler,则运行器的设置将作为默认值合并到其中:对于每个设置,只有当 Crawler 尚未以相等或更高优先级拥有该设置时,才应用运行器的值。然后返回该 Crawler。

  • 如果 crawler_or_spidercls 是一个 Spider 子类,则使用此运行器的设置为其构造一个新的 Crawler。

  • 如果 crawler_or_spidercls 是一个字符串,此函数将在 Scrapy 项目中(使用爬虫加载器)查找具有此名称的爬虫,然后为其创建一个 Crawler 实例。

join()

返回一个当所有受管理的 crawlers 完成执行时触发的 deferred 对象。

start(stop_after_crawl: bool = True, install_signal_handlers: bool = True) None[source]

此方法启动一个 reactor,将其池大小调整为 REACTOR_THREADPOOL_MAXSIZE,并根据 TWISTED_DNS_RESOLVER 安装一个 DNS 解析器。

如果 stop_after_crawl 为 True,则在所有爬虫完成后,将使用 join() 停止 reactor。

参数:
  • stop_after_crawl (布尔值) – 当所有爬虫完成后是否停止 reactor

  • install_signal_handlers (布尔值) – 是否安装来自 Twisted 和 Scrapy 的操作系统信号处理程序(默认值:True)

stop() Deferred[Any]

同时停止所有正在进行的爬取作业。

返回一个当它们全部结束后触发的 deferred 对象。

设置 API

scrapy.settings.SETTINGS_PRIORITIES

一个字典,用于设置 Scrapy 中使用的默认设置优先级的键名和优先级级别。

每个条目定义了一个设置入口点,赋予其一个用于标识的代码名称和一个整数优先级。在 Settings 类中设置和检索值时,较高的优先级会覆盖较低的优先级。

SETTINGS_PRIORITIES = {
    "default": 0,
    "command": 10,
    "addon": 15,
    "project": 20,
    "spider": 30,
    "cmdline": 40,
}

有关每个设置源的详细说明,请参见:设置

scrapy.settings.get_settings_priority(priority: int | str) int[source]

一个小的辅助函数,用于在 SETTINGS_PRIORITIES 字典中查找给定的字符串优先级并返回其数值,或者直接返回给定的数值优先级。

class scrapy.settings.Settings(values: _SettingsInput = None, priority: int | str = 'project')[source]

基类:BaseSettings

此对象存储 Scrapy 设置,用于内部组件的配置,并可用于任何进一步的自定义。

它是 BaseSettings 的直接子类,支持其所有方法。此外,在此类实例化后,新对象将已填充 内置设置参考 中描述的全局默认设置。

class scrapy.settings.BaseSettings(values: _SettingsInput = None, priority: int | str = None)[source]

此类的实例行为类似于字典,但除了 (键, 值) 对之外,还存储优先级,并且可以被冻结(即标记为不可变)。

键值条目可以在初始化时通过 values 参数传入,它们将采用 priority 级别(除非 values 已经是 BaseSettings 的实例,在这种情况下,将保留现有的优先级级别)。如果 priority 参数是一个字符串,则将在 SETTINGS_PRIORITIES 中查找优先级名称。否则,应提供一个特定的整数。

对象创建后,可以使用 set() 方法加载或更新新设置,并可以使用字典的方括号表示法或实例的 get() 方法及其值转换变体进行访问。请求存储的键时,将检索具有最高优先级的值。

add_to_list(name: str, item: Any) None[source]

如果 item 尚未在列表中,则将 item 附加到指定 namelist 设置。

此更改无论 name 设置的优先级如何都会应用。设置优先级也不会受此更改的影响。

copy() Self[source]

深度复制当前设置。

此方法返回一个此类的新实例,其中填充了相同的值及其优先级。

对新对象的修改不会反映到原始设置上。

copy_to_dict() dict[str, Any][source]

复制当前设置并转换为字典。

此方法返回一个新字典,其中填充了与当前设置相同的值。

对返回字典的修改不会反映到原始设置上。

例如,此方法可用于在 Scrapy shell 中打印设置。

freeze() None[source]

禁用对当前设置的进一步更改。

调用此方法后,设置的当前状态将变为不可变。尝试通过 set() 方法及其变体更改值将不再可能,并将发出警告。

frozencopy() Self[source]

返回当前设置的不可变副本。

copy() 返回的对象中 freeze() 调用的别名。

get(name: str, default: Any = None) Any[源]

获取一个设置值,而不影响其原始类型。

参数:
  • name (str) – 设置的名称

  • default (object) – 如果未找到设置,则返回的值

get_component_priority_dict_with_base(name: str) BaseSettings[源]

获取组件优先级字典设置及其 _BASE 对应项的组合。

键被解析为其导入路径以进行去重,然后恢复为它们的最新输入表示。

参数:

name (str) – 组件优先级字典设置的名称

getbool(name: str, default: bool = False) bool[源]

获取一个布尔类型的设置值。

1, '1', 真`'True' 返回 True,而 0, '0', False, 'False'None 返回 False

例如,通过环境变量设置为 '0' 的设置,在使用此方法时将返回 False

参数:
  • name (str) – 设置的名称

  • default (object) – 如果未找到设置,则返回的值

getdict(name: str, default: dict[Any, Any] | None = None) dict[Any, Any][源]

获取一个字典类型的设置值。如果设置的原始类型是字典,则返回其副本。如果它是字符串,则会将其评估为 JSON 字典。如果它本身是一个 BaseSettings 实例,它将被转换为一个字典,其中包含其所有当前设置值(就像通过 get() 返回的那样),并丢失所有关于优先级和可变性的信息。

参数:
  • name (str) – 设置的名称

  • default (object) – 如果未找到设置,则返回的值

getdictorlist(name: str, default: dict[Any, Any] | list[Any] | tuple[Any] | None = None) dict[Any, Any] | list[Any][源]

获取一个字典或列表类型的设置值。

如果设置已经是字典或列表,则返回其副本。

如果它是字符串,则会将其评估为 JSON,或者作为备用,评估为逗号分隔的字符串列表。

例如,从命令行填充的设置将返回

  • {'key1': 'value1', 'key2': 'value2'} 如果设置为 '{"key1": "value1", "key2": "value2"}'

  • ['one', 'two'] 如果设置为 '["one", "two"]''one,two'

参数:
  • name (字符串) – 设置的名称

  • default (任意类型) – 如果未找到设置,则返回的值

getfloat(name: str, default: float = 0.0) float[源]

获取一个浮点类型的设置值。

参数:
  • name (str) – 设置的名称

  • default (object) – 如果未找到设置,则返回的值

getint(name: str, default: int = 0) int[源]

获取一个整数类型的设置值。

参数:
  • name (str) – 设置的名称

  • default (object) – 如果未找到设置,则返回的值

getlist(name: str, default: list[Any] | None = None) list[Any][源]

获取一个列表类型的设置值。如果设置的原始类型是列表,则返回其副本。如果它是字符串,则会按“,”分割。如果它是空字符串,则返回一个空列表。

例如,通过环境变量设置为 'one,two' 的设置,在使用此方法时将返回列表 ['one', 'two']。

参数:
  • name (str) – 设置的名称

  • default (object) – 如果未找到设置,则返回的值

getpriority(name: str) int | None[源]

返回设置当前的数值优先级,如果给定的 name 不存在,则返回 None

参数:

name (str) – 设置的名称

getwithbase(name: str) BaseSettings[源]

获取一个类字典设置及其 _BASE 对应项的组合。

如果设置是组件优先级字典,请改用get_component_priority_dict_with_base()

参数:

name (str) – 类字典设置的名称

maxpriority() int[源]

返回所有设置中存在的最高优先级数值,如果未存储任何设置,则返回 SETTINGS_PRIORITIESdefault 的数值。

pop(k[, d]) v, 移除指定的键并返回相应的[源]

值。如果未找到键,如果提供了 d 则返回 d,否则引发 KeyError。

remove_from_list(name: str, item: Any) None[源]

从指定 namelist 设置中移除 item

如果 item 缺失,则引发 ValueError

此更改无论 name 设置的优先级如何都会应用。设置优先级也不会受此更改的影响。

replace_in_component_priority_dict(name: str, old_cls: type, new_cls: type, priority: int | None = None) None[源]

name 组件优先级字典 中,用 new_cls 替换 old_cls

如果 old_cls 缺失,或其值为 None,则引发 KeyError

如果 old_cls 作为导入字符串存在,即使不止一次,这些键也会被删除并替换为 new_cls

如果指定了 priority,则该值将分配给组件优先级字典中的 new_cls。否则,使用 old_cls 的值。如果 old_cls 以不同的值多次出现(可能带有导入字符串),则分配给 new_cls 的值是其中之一,不保证是哪一个。

此更改无论 name 设置的优先级如何都会应用。设置优先级也不会受此更改的影响。

set(name: str, value: Any, priority: int | str = 'project') None[源]

存储具有给定优先级的键/值属性。

设置应在 Crawler 对象应用它们 之前 填充(在 crawl_async()crawl() 方法中),否则它们将不起作用。

参数:
  • name (str) – 设置的名称

  • value (object) – 要与设置关联的值

  • priority (strint) – 设置的优先级。应为 SETTINGS_PRIORITIES 的键或一个整数

set_in_component_priority_dict(name: str, cls: type, priority: int | None) None[源]

使用 priority 设置 name 组件优先级字典 中的 cls 组件。

如果 cls 已存在,则其值将被更新。

如果 cls 作为导入字符串存在,即使不止一次,这些键也会被删除并替换为 cls

此更改无论 name 设置的优先级如何都会应用。设置优先级也不会受此更改的影响。

setdefault(k[, d]) D.get(k,d),如果 k 不在 D 中,则设置 D[k]=d[源]
setdefault_in_component_priority_dict(name: str, cls: type, priority: int | None) None[源]

如果在 name 组件优先级字典 设置中尚未定义 cls 组件(即使作为导入字符串),则使用 priority 设置该组件。

如果 cls 尚未定义,则无论 name 设置的优先级如何,都将对其进行设置。此更改也不会影响设置优先级。

setmodule(module: ModuleType | str, priority: int | str = 'project') None[源]

存储具有给定优先级的模块设置。

这是一个辅助函数,它会为 module 中每个全局声明的大写变量调用 set(),并使用提供的 priority

参数:
update(values: _SettingsInput, priority: int | str = 'project') None[源]

存储具有给定优先级的键/值对。

这是一个辅助函数,它会为 values 的每个项调用 set(),并使用提供的 priority

如果 values 是字符串,则假定它是 JSON 编码的,并首先通过 json.loads() 解析为字典。如果它是一个 BaseSettings 实例,则将使用每个键的优先级,并忽略 priority 参数。这允许通过单个命令插入/更新具有不同优先级的设置。

参数:

SpiderLoader API

class scrapy.spiderloader.SpiderLoader[源]

该类负责检索和处理项目中定义的 Spider 类。

可以通过在 SPIDER_LOADER_CLASS 项目设置中指定路径来使用自定义 Spider 加载器。它们必须完全实现 scrapy.interfaces.ISpiderLoader 接口,以确保无错误执行。

from_settings(settings)[源]

此类方法由 Scrapy 用于创建类的实例。它与当前项目设置一起调用,并递归加载 SPIDER_MODULES 设置模块中找到的 Spider。

参数:

settings (Settings 实例) – 项目设置

load(spider_name)[源]

获取具有给定名称的 Spider 类。它将会在之前加载的 Spider 中查找名称为 spider_name 的 Spider 类,如果未找到则会引发 KeyError。

参数:

spider_name (str) – Spider 类名

list()[源]

获取项目中可用 Spider 的名称。

find_by_request(request)[源]

列出可以处理给定请求的 Spider 名称。它将尝试将请求的 URL 与 Spider 的域进行匹配。

参数:

request (Request 实例) – 查询的请求

class scrapy.spiderloader.DummySpiderLoader[源]

一个不加载任何 Spider 的虚拟 Spider 加载器。

信号 API

class scrapy.signalmanager.SignalManager(sender: Any = _Anonymous)[源]
connect(receiver: Any, signal: Any, **kwargs: Any) None[源]

将接收器函数连接到信号。

信号可以是任何对象,尽管 Scrapy 附带了一些预定义的信号,这些信号在信号部分有文档说明。

参数:
disconnect(receiver: Any, signal: Any, **kwargs: Any) None[源]

从信号中断开接收器函数。这与 connect() 方法的效果相反,并且参数相同。

disconnect_all(signal: Any, **kwargs: Any) None[源]

断开所有接收器与给定信号的连接。

参数:

signal (object) – 要断开连接的信号

send_catch_log(signal: Any, **kwargs: Any) list[tuple[Any, Any]][源]

发送信号,捕获并记录异常。

关键字参数会传递给信号处理程序(通过 connect() 方法连接)。

async send_catch_log_async(signal: Any, **kwargs: Any) list[tuple[Any, Any]][源]

send_catch_log() 类似,但支持异步信号处理程序

返回一个协程,该协程在所有信号处理程序完成后完成。发送信号,捕获并记录异常。

关键字参数会传递给信号处理程序(通过 connect() 方法连接)。

2.14 版本中新增。

send_catch_log_deferred(signal: Any, **kwargs: Any) Deferred[list[tuple[Any, Any]]][源]

send_catch_log() 类似,但支持异步信号处理程序

返回一个 Deferred,该 Deferred 在所有信号处理程序完成后触发。发送信号,捕获并记录异常。

关键字参数会传递给信号处理程序(通过 connect() 方法连接)。

async wait_for(signal: Any) None[源]

等待下一个 信号

有关示例,请参阅延迟启动请求迭代

统计收集器 API

scrapy.statscollectors 模块下有多个统计收集器可用,它们都实现了由 StatsCollector 类定义的统计收集器 API(所有这些收集器都继承自该类)。

class scrapy.statscollectors.StatsCollector[源]
get_value(key, default=None)[源]

返回给定统计键的值,如果不存在则返回默认值。

get_stats()[源]

以字典形式获取当前运行的 Spider 的所有统计数据。

set_value(key, value)[源]

为给定统计键设置给定值。

set_stats(stats)[源]

stats 参数中传入的字典覆盖当前统计数据。

inc_value(key, count=1, start=0)[源]

将给定统计键的值增加给定计数,并假设给定了起始值(当未设置时)。

max_value(key, value)[源]

仅当同一键的当前值低于给定值时,才为给定键设置给定值。如果给定键没有当前值,则始终设置该值。

min_value(key, value)[源]

仅当同一键的当前值大于给定值时,才为给定键设置给定值。如果给定键没有当前值,则始终设置该值。

clear_stats()[源]

清除所有统计数据。

以下方法不属于统计收集 API,而是在实现自定义统计收集器时使用

open_spider()[源]

为统计数据收集打开 Spider。

close_spider()[源]

关闭 Spider。在此调用之后,无法再访问或收集特定的统计数据。

引擎 API

class scrapy.core.engine.ExecutionEngine[源]
needs_backout() bool[源]

如果当前无法发送更多请求,则返回 True,否则返回 False

有关示例,请参阅延迟启动请求迭代