核心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
对象。- stats¶
这个爬虫的统计收集程序。
这用于从扩展和中间软件记录其行为的统计信息,或访问由其他扩展收集的统计信息。
有关stats集合的介绍,请参见 统计数据集合 .
对于API见
StatsCollector
班级。
- engine¶
执行引擎,它协调调度程序、下载程序和spider之间的核心爬行逻辑。
有些扩展可能希望访问scrapy引擎,检查或修改下载程序和调度程序的行为,尽管这是一种高级用法,而且这个API还不稳定。
- crawl(*args, **kwargs)¶
通过用给定的
args
和kwargs
参数,同时设置运行中的执行引擎。返回在爬网完成时激发的延迟。
设置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_to_dict()[源代码]¶
复制当前设置并转换为dict。
此方法返回一个新的dict,该dict使用与当前设置相同的值及其优先级填充。
对返回的dict的修改不会反映在原始设置上。
例如,此方法对于在Scrapy Shell中打印设置很有用。
- getbool(name, default=False)[源代码]¶
获取设置值作为布尔值。
1
,'1'
, True ‘和'True'
返回True
,同时0
,'0'
,False
,'False'
和None
返回False
.例如,通过设置为的环境变量填充的设置
'0'
将返回False
使用此方法时。
- getdict(name, default=None)[源代码]¶
获取一个设置值作为字典。如果设置原始类型为字典,则返回其副本。如果它是一个字符串,它将作为JSON字典进行计算。如果它是一个
BaseSettings
实例本身,它将被转换为一个字典,其中包含所有当前设置值,这些值将由返回get()
以及丢失有关优先级和可变性的所有信息。
- getlist(name, default=None)[源代码]¶
以列表形式获取设置值。如果设置的原始类型是列表,则将返回其副本。如果是一个字符串,它将被“,”拆分。
例如,通过设置为的环境变量填充的设置
'one,two'
将返回列表 [一个,两个] 使用此方法时。
- maxpriority()[源代码]¶
返回所有设置中存在的最高优先级的数值,或返回
default
从SETTINGS_PRIORITIES
如果没有存储设置。
- set(name, value, priority='project')[源代码]¶
存储具有给定优先级的键/值属性。
应填充设置 之前 配置爬虫对象(通过
configure()
方法),否则它们不会有任何效果。- 参数
name (str) -- 设置名称
value (object) -- 要与设置关联的值
priority (str or int) -- 设置的优先级。应该是
SETTINGS_PRIORITIES
或整数
- setmodule(module, priority='project')[源代码]¶
存储具有给定优先级的模块的设置。
这是一个调用
set()
对于每个全局声明的大写变量module
提供的priority
.- 参数
module (types.ModuleType or str) -- 模块或模块路径
priority (str or int) -- 设置的优先级。应该是
SETTINGS_PRIORITIES
或整数
- update(values, priority='project')[源代码]¶
存储具有给定优先级的键/值对。
这是一个调用
set()
每一项values
提供的priority
.如果
values
是一个字符串,它被假定为JSON编码并被解析为一个dictjson.loads()
第一。如果是BaseSettings
例如,每个键的优先级将被使用,并且priority
参数被忽略。这允许使用单个命令插入/更新具有不同优先级的设置。- 参数
values (dict or string or
BaseSettings
) -- 设置名称和值priority (str or int) -- 设置的优先级。应该是
SETTINGS_PRIORITIES
或整数
SpiderLoader API¶
- class scrapy.spiderloader.SpiderLoader[源代码]¶
这个类负责检索和处理整个项目中定义的蜘蛛类。
通过在
SPIDER_LOADER_CLASS
项目设置。他们必须全面实施scrapy.interfaces.ISpiderLoader
保证无误执行的接口。- from_settings(settings)[源代码]¶
Scrapy使用该类方法创建该类的实例。它使用当前的项目设置调用,并加载在
SPIDER_MODULES
设置。- 参数
settings (
Settings
instance) -- 项目设置
信号API¶
统计收集器API¶
在 scrapy.statscollectors
模块和它们都实现由 StatsCollector
类(它们都从中继承)。