Scrapy源码学习(二)

时间:2023-03-09 06:19:08
Scrapy源码学习(二)

上次说到scrapy_home/scrapy/commands包下每个模块对应了scrapy命令行中的一个命令,他们都继承自command.py模块中ScrapyCommand这个类,这次就来简单看一下ScrapyCommand这个类。

一、几个属性

ScrapyCommand类有几个全局属性:

requires_project,表示该命令是否需要在project中才能执行;

crawler_process,CrawlerProcess类的实例,是一个抓取处理器,在一个抓取处理器中能运行多个抓取;

default_settings,默认的配置;

exitcode,退出状态。

另外,还有

_crawler属性,这个是一次抓取至少需要的一个抓取器;

settings,用来保存抓取的配置。

二、几个成员函数

__init__(self),初始化函数;

set_crawler(self, crawler),设置抓取器;

crawler(self),创建一个抓取器,并将创建的抓取器用set_crawler函数设置;

syntax、short_desc、long_desc、help,这几个是用来提示命令功能及使用方法的函数,由具体的命令实现模块覆盖;

add_options(self, parser),命令能用的options在这里做出限制;

process_options(self, args, opts),根据传入的options修改本次执行的一些配置;

run(self, args, opts),执行一个具体的命令,具体执行内容由具体的命令实现模块覆盖,执行某一具体命令的入口。

三、总结

这个类是比较简单的,作为scrapy所有命令的基类,该类定义了一些共有的属性,完成了一些共有的功能,另外对各命令的行为做出了一些共有的限制。