核心API

新版本0.15。

本节介绍了Scrapy核心API,它面向扩展和中间件的开发人员。

履历API

Scrapy API的主要入口点是Crawler对象,通过from_crawler类方法传递给扩展。该对象提供对所有Scrapy核心组件的访问,它是扩展访问它们并将其功能挂钩到Scrapy中的唯一方法。

扩展管理器负责加载和跟踪已安装的扩展,并通过EXTENSIONS设置进行配置,该设置包含所有可用扩展名的字典,并且它们的顺序类似于如何配置下载器中间件。

class scrapy.crawler.Crawler(spidercls,settings)

履带对象必须用scrapy.spiders.Spider子类和scrapy.settings.Settings对象来实例化。

设置

此抓取工具的设置管理器。

扩展程序和中间件用于访问此爬网程序的Scrapy设置。

有关Scrapy设置的介绍,请参阅设置。

对于API,请参阅Settings类。

信号

这个爬虫的信号管理器。

这被扩展和中间件用于将自己挂钩到Scrapy功能。

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

对于API,请参阅SignalManager类。

统计

这个履带的统计收集器。

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

有关统计资料的介绍,请参阅Stats Collection。

对于API,请参阅StatsCollector类。

扩展

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

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

有关扩展程序的介绍和Scrapy上的可用扩展名单,请参阅扩展。

发动机

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

某些扩展可能需要访问Scrapy引擎,以检查或修改下载程序和调度程序的行为,尽管这是高级用途,并且该API尚不稳定。

蜘蛛

蜘蛛目前正在爬行。这是构建爬网程序时提供的蜘蛛类的一个实例,它是在crawl()方法中给出的参数之后创建的。

爬行(* args,** kwargs)

通过使用给定的args和kwargs参数实例化其蜘蛛类,同时设置执行引擎,启动爬虫。

返回在抓取完成时触发的延迟。

class scrapy.crawler.CrawlerRunner(settings = None)

这是一个方便的助手类,可以跟踪,管理和运行已安装的Twisted反应器内的抓取工具。

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

不应该需要这个类(因为Scrapy负责相应地使用它),除非编写手动处理爬网过程的脚本。请参阅从脚本运行Scrapy作为示例。

抓取(crawler_or_spidercls,* args,** kwargs)

使用提供的参数运行爬网程序。

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

如果crawler_or_spidercls不是Crawler实例,则此方法将尝试使用此参数创建一个作为其给予的蜘蛛类。

返回在抓取完成时触发的延迟。

参数:

crawler_or_spidercls(Crawler实例,Spider子类或字符串) - 已创建的抓取工具,或项目中的蜘蛛类或蜘蛛名称来创建它

args(list) - 初始化蜘蛛的参数

kwargs(dict) - 初始化蜘蛛的关键字参数

爬虫

由crawl()启动的抓取工具集,由此类管理。

create_crawler(crawler_or_spidercls)

返回爬网程序对象。

如果crawler_or_spidercls是Crawler,则会按原样返回。

如果crawler_or_spidercls是Spider子类,则会为其构建一个新的Crawler。

如果crawler_or_spidercls是一个字符串,则此功能会在Scrapy项目(使用spider加载器)中找到具有此名称的蜘蛛,然后为其创建一个Crawler实例。

加入()

返回在所有托管抓取工具完成执行时触发的延迟。

停止()

同时停止发生的所有爬行工作。

返回在所有结束时触发的延迟。

class scrapy.crawler.CrawlerProcess(settings = None)

基础:scrapy.crawler.CrawlerRunner

一个同时在一个过程中运行多个刮板抓取器的类。

该类扩展了CrawlerRunner,通过添加支持启动Twisted电抗器并处理关闭信号,如键盘中断命令Ctrl-C。它还配置顶级日志记录。

如果您的应用程序中没有运行另一个Twisted反应器,则此实用程序应该比CrawlerRunner更合适。

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

不应该需要这个类(因为Scrapy负责相应地使用它),除非编写手动处理爬网过程的脚本。请参阅从脚本运行Scrapy作为示例。

抓取(crawler_or_spidercls,* args,** kwargs)

使用提供的参数运行爬网程序。

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

如果crawler_or_spidercls不是Crawler实例,则此方法将尝试使用此参数创建一个作为其给予的蜘蛛类。

返回在抓取完成时触发的延迟。

参数:

crawler_or_spidercls(Crawler实例,Spider子类或字符串) - 已创建的抓取工具,或项目中的蜘蛛类或蜘蛛名称来创建它

args(list) - 初始化蜘蛛的参数

kwargs(dict) - 初始化蜘蛛的关键字参数

爬虫

由crawl()启动的抓取工具集,由此类管理。

create_crawler(crawler_or_spidercls)

返回爬网程序对象。

如果crawler_or_spidercls是Crawler,则会按原样返回。

如果crawler_or_spidercls是Spider子类,则会为其构建一个新的Crawler。

如果crawler_or_spidercls是一个字符串,则此功能会在Scrapy项目(使用spider加载器)中找到具有此名称的蜘蛛,然后为其创建一个Crawler实例。

加入()

返回在所有托管抓取工具完成执行时触发的延迟。

开始(stop_after_crawl =真)

此方法启动Twisted反应器,将其大小调整为REACTOR_THREADPOOL_MAXSIZE,并根据DNSCACHE_ENABLED和DNSCACHE_SIZE安装DNS缓存。

如果stop_after_crawl为True,则在所有爬网程序完成后,使用join()将停止反应器。

参数:stop_after_crawl(boolean) - 当所有爬网程序完成时停止或停止反应器

停止()

同时停止发生的所有爬行工作。

返回在所有结束时触发的延迟。

设置API

scrapy.settings.SETTINGS_PRIORITIES

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

每个项目定义一个设置入口点,为其提供用于标识的代码名称和整数优先级。在“设置”类中设置和检索值时,优先级要优于较小的优先级。

SETTINGS_PRIORITIES = {

'default':0,

'command':10,

'项目':20,

'蜘蛛':30,

'cmdline':40,

}

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

scrapy.settings.get_settings_priority(优先级)

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

class scrapy.settings.Settings(values = None,priority ='project')

基数:scrapy.settings.BaseSettings

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

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

class scrapy.settings.BaseSettings(values = None,priority ='project')

这个类的实例表现得像字典,但存储优先级及其(键,值)对,并且可以被冻结(即标记为不可变)。

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

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

复制()

深入了解当前设置。

此方法返回一个新的实例的Settings类,填充相同的值和它们的优先级。

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

copy_to_dict()

制作当前设置的副本并转换为dict。

此方法返回一个新的dict,其中包含与当前设置相同的值及其优先级。

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

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

冻结()

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

调用此方法后,设置的当前状态将变为不可变的。尝试通过set()方法及其变体来更改值将是不可能的,并将被提醒。

frozencopy()

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

由copy()返回的对象中的冻结()调用别名。

get(name,default = None)

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

参数:

name(string) - 设置名称

default(any) - 如果没有找到设置,返回的值

getbool(name,default = False)

获取设置值作为布尔值。

1,'1',True'和'True'返回True,而0,'0',False,'False'和None返回False。

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

参数:

name(string) - 设置名称

default(any) - 如果没有找到设置,返回的值

getdict(name,default = None)

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

参数:

name(string) - 设置名称

default(any) - 如果没有找到设置,返回的值

getfloat(name,default = 0.0)

获取设置值作为浮点数。

参数:

name(string) - 设置名称

default(any) - 如果没有找到设置,返回的值

getint(name,default = 0)

获取设置值作为int。

参数:

name(string) - 设置名称

default(any) - 如果没有找到设置,返回的值

getlist(name,default = None)

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

例如,使用此方法时,环境变量设置为“一,二”的设置将返回一个列表['one','two']。

参数:

name(string) - 设置名称

default(any) - 如果没有找到设置,返回的值

getpriority(名称)

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

参数:name(string) - 设置名称

getwithbase(名称)

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

参数:name(string) - 类似字典的设置的名称

maxpriority()

返回所有设置中最高优先级的数值,或者如果没有存储设置,则返回SETTINGS_PRIORITIES的默认值。

set(name,value,priority ='project')

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

在配置Crawler对象(通过configure()方法)之前,应该填充设置,否则它们不会有任何影响。

参数:

name(string) - 设置名称

value(any) - 与设置关联的值

priority(string或int) - 设置的优先级。应该是SETTINGS_PRIORITIES的键或整数

setmodule(module,priority ='project')

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

这是一个帮助函数,它为所有提供优先级的模块的每个全局声明的大写变量调用set()。

参数:

模块(模块对象或字符串) - 模块或模块的路径

priority(string或int) - 设置的优先级。应该是SETTINGS_PRIORITIES的键或整数

update(values,priority ='project')

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

这是一个帮助函数,它为每个具有提供优先级的值项调用set()。

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

参数:

值(dict或string或BaseSettings) - 设置名称和值

priority(string或int) - 设置的优先级。应该是SETTINGS_PRIORITIES的键或整数

SpiderLoader API

class scrapy.loader.SpiderLoader

该类负责检索和处理跨项目定义的蜘蛛类。

可以通过在SPIDER_LOADER_CLASS项目设置中指定其路径来使用自定义蜘蛛装载程序。他们必须完全实现scrapy.interfaces.ISpiderLoader接口,以保证无错执行。

from_settings(设置)

Scrapy使用此类方法来创建类的实例。它使用当前的项目设置进行调用,并将其在SPIDER_MODULES设置的模块中递归地加载蜘蛛。

参数:settings(设置实例) - 项目设置

负载(spider_name)

获取给定名称的Spider类。它将查找以前加载的蜘蛛,名为spider_name的蜘蛛类,如果未找到,将引发KeyError。

参数:spider_name(str) - 蜘蛛类名称

名单()

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

find_by_request(请求)

列出可以处理给定请求的蜘蛛名称。将尝试将请求的网址与蜘蛛的域匹配。

参数:request(Request instance) - 查询请求

信号API

类scrapy.signalmanager.SignalManager(sender = _Anonymous)

连接(接收器,信号,** kwargs)

将接收机功能连接到信号。

信号可以是任何对象,尽管Scrapy带有一些在信号部分中记录的预定义信号。

参数:

接收器(可调用) - 要连接的功能

信号(对象) - 要连接的信号

断开(接收器,信号,** kwargs)

断开接收机功能与信号的连接。这与connect()方法相反,参数是相同的。

disconnect_all(signal,** kwargs)

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

参数:signal(object) - 要断开的信号

send_catch_log(signal,** kwargs)

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

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

send_catch_log_deferred(signal,** kwargs)

像send_catch_log(),但支持从信号处理程序返回延期。

返回一旦所有信号处理程序延迟被触发,Deferred将被触发。发送信号,捕获异常并记录它们。

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

统计收集器API

有几个Stats Collector可以在scrapy.statscollectors模块下使用,它们都实现了由StatsCollector类定义的Stats Collector API(它们都是从它们继承的)。

class scrapy.statscollectors.StatsCollector

get_value(key,default = None)

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

get_stats()

从当前运行的蜘蛛获取所有统计数据作为dict。

set_value(key,value)

设置给定统计信息键的给定值。

set_stats(统计)

使用stats参数传递的dict来覆盖当前的统计信息。

inc_value(key,count = 1,start = 0)

以给定的计数,假定给定的起始值(当没有设置时)增加给定的统计数据值的值。

max_value(键值)

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

min_value(键值)

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

clear_stats()

清除所有统计资料

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

open_spider(蜘蛛)

打开给定的蜘蛛进行统计收集。

close_spider(蜘蛛)

关闭给定的蜘蛛。之后,没有更多的具体统计信息可以访问或收集。

results matching ""

    No results matching ""