核心API

本节记录了Scrapy核心API,它是为扩展和中间件的开发人员设计的。

爬虫API

Scrapy API的主要入口点是 Crawler 对象,通过 from_crawler 类方法。这个对象提供对所有Scrapy核心组件的访问,它是扩展访问它们并将其功能连接到Scrapy的唯一方法。

扩展管理器负责加载和跟踪已安装的扩展,并通过 EXTENSIONS 包含所有可用扩展名及其顺序的字典的设置,类似于 configure the downloader middlewares .

class scrapy.crawler.Crawler(spidercls, settings)

Crawler对象必须使用 scrapy.Spider 子类和一个 scrapy.settings.Settings 对象。

settings

此爬网程序的设置管理器。

这被扩展和中间软件用来访问这个爬虫程序的 Scrapy 设置。

有关碎屑设置的介绍,请参见 设置 .

对于API见 Settings 班级。

signals

这个爬虫的信号管理器。

这被扩展和中间商用来将自己连接到零碎的功能中。

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

对于API见 SignalManager 班级。

stats

这个爬虫的统计收集程序。

这用于从扩展和中间软件记录其行为的统计信息,或访问由其他扩展收集的统计信息。

有关stats集合的介绍,请参见 统计数据集合 .

对于API见 StatsCollector 班级。

extensions

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

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

有关扩展名的介绍和scrapy上可用扩展名的列表,请参见 扩展 .

engine

执行引擎,它协调调度程序、下载程序和spider之间的核心爬行逻辑。

有些扩展可能希望访问scrapy引擎,检查或修改下载程序和调度程序的行为,尽管这是一种高级用法,而且这个API还不稳定。

spider

蜘蛛当前正在被爬行。这是构建爬虫程序时提供的蜘蛛类的实例,它是在 crawl() 方法。

crawl(*args, **kwargs)

通过用给定的 argskwargs 参数,同时设置运行中的执行引擎。

返回在爬网完成时激发的延迟。

设置API

scrapy.settings.SETTINGS_PRIORITIES

设置Scrapy中使用的默认设置优先级的键名称和优先级级别的字典。

每个项目定义一个设置入口点,为其提供标识代码名和整数优先级。在 Settings 班级。

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

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

scrapy.settings.get_settings_priority(priority)[源代码]

在中查找给定字符串优先级的小助手函数 SETTINGS_PRIORITIES 并返回其数值,或直接返回给定的数值优先级。

class scrapy.settings.Settings(values=None, priority='project')[源代码]

基类:scrapy.settings.BaseSettings

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

它是一个直接的子类,支持 BaseSettings . 另外,在实例化这个类之后,新对象将具有上面描述的全局默认设置 内置设置参考 已经填充。

class scrapy.settings.BaseSettings(values=None, priority='project')[源代码]

此类的实例的行为类似于字典,但将优先级与其 (key, value) 对,并且可以冻结(即标记为不可变)。

键值项可以在初始化时通过 values 他们会接受 priority 水平(除非 values 已经是的实例 BaseSettings 在这种情况下,将保留现有的优先级)。如果 priority 参数是字符串,优先级名称将在 SETTINGS_PRIORITIES . 否则,应提供特定的整数。

创建对象后,可以使用 set() 方法,并且可以使用字典的方括号符号或 get() 实例的方法及其值转换变量。请求存储的密钥时,将检索具有最高优先级的值。

copy()[源代码]

对当前设置进行深度复制。

此方法返回 Settings 类,使用相同的值及其优先级填充。

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

copy_to_dict()[源代码]

复制当前设置并转换为dict。

此方法返回一个新的dict,该dict使用与当前设置相同的值及其优先级填充。

对返回的dict的修改不会反映在原始设置上。

例如,此方法对于在Scrapy Shell中打印设置很有用。

freeze()[源代码]

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

调用此方法后,设置的当前状态将变为不可变。尝试通过 set() 方法及其变体是不可能的,将被警告。

frozencopy()[源代码]

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

A的别名 freeze() 调用返回的对象 copy() .

get(name, default=None)[源代码]

在不影响其原始类型的情况下获取设置值。

参数
  • name (str) -- 设置名称

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

getbool(name, default=False)[源代码]

获取设置值作为布尔值。

1'1'True ‘和 'True' 返回 True ,同时 0'0'False'False'None 返回 False .

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

参数
  • name (str) -- 设置名称

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

getdict(name, default=None)[源代码]

获取一个设置值作为字典。如果设置原始类型为字典,则返回其副本。如果它是一个字符串,它将作为JSON字典进行计算。如果它是一个 BaseSettings 实例本身,它将被转换为一个字典,其中包含所有当前设置值,这些值将由返回 get() 以及丢失有关优先级和可变性的所有信息。

参数
  • name (str) -- 设置名称

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

getfloat(name, default=0.0)[源代码]

以浮点形式获取设置值。

参数
  • name (str) -- 设置名称

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

getint(name, default=0)[源代码]

以int形式获取设置值。

参数
  • name (str) -- 设置名称

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

getlist(name, default=None)[源代码]

以列表形式获取设置值。如果设置的原始类型是列表,则将返回其副本。如果是一个字符串,它将被“,”拆分。

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

参数
  • name (str) -- 设置名称

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

getpriority(name)[源代码]

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

参数

name (str) -- 设置名称

getwithbase(name)[源代码]

获取类似字典的设置及其 _BASE 对应的。

参数

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

maxpriority()[源代码]

返回所有设置中存在的最高优先级的数值,或返回 defaultSETTINGS_PRIORITIES 如果没有存储设置。

set(name, value, priority='project')[源代码]

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

应填充设置 之前 配置爬虫对象(通过 configure() 方法),否则它们不会有任何效果。

参数
setmodule(module, priority='project')[源代码]

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

这是一个调用 set() 对于每个全局声明的大写变量 module 提供的 priority .

参数
update(values, priority='project')[源代码]

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

这是一个调用 set() 每一项 values 提供的 priority .

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

参数

SpiderLoader API

class scrapy.spiderloader.SpiderLoader[源代码]

这个类负责检索和处理整个项目中定义的蜘蛛类。

通过在 SPIDER_LOADER_CLASS 项目设置。他们必须全面实施 scrapy.interfaces.ISpiderLoader 保证无误执行的接口。

from_settings(settings)[源代码]

Scrapy使用该类方法创建该类的实例。它使用当前的项目设置调用,并加载在 SPIDER_MODULES 设置。

参数

settings (Settings instance) -- 项目设置

load(spider_name)[源代码]

获取具有给定名称的蜘蛛类。它将在先前加载的spider中查找具有名称的spider类 spider_name 如果找不到,将引发keyerror。

参数

spider_name (str) -- 蜘蛛类名

list()[源代码]

获取项目中可用蜘蛛的名称。

find_by_request(request)[源代码]

列出能够处理给定请求的蜘蛛的名称。将尝试将请求的URL与蜘蛛的域相匹配。

参数

request (Request instance) -- 查询请求

信号API

统计收集器API

scrapy.statscollectors 模块和它们都实现由 StatsCollector 类(它们都从中继承)。

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

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

get_stats()[源代码]

以dict形式获取当前运行的spider的所有统计信息。

set_value(key, value)[源代码]

为给定的stats键设置给定值。

set_stats(stats)[源代码]

使用传入的dict重写当前状态 stats 参数。

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

假定给定的起始值(未设置时),按给定的计数递增给定的stats键的值。

max_value(key, value)[源代码]

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

min_value(key, value)[源代码]

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

clear_stats()[源代码]

清除所有统计。

以下方法不是stats集合API的一部分,而是在实现自定义stats收集器时使用的:

open_spider(spider)[源代码]

打开给定的蜘蛛以收集统计信息。

close_spider(spider)[源代码]

关闭给定的蜘蛛。调用之后,就不能访问或收集更多的特定统计信息。