Scrapy源碼學習(二)

上次說到scrapy_home/scrapy/commands包下每一個模塊對應了scrapy命令行中的一個命令,他們都繼承自command.py模塊中ScrapyCommand這個類,此次就來簡單看一下ScrapyCommand這個類。scrapy

1、幾個屬性

ScrapyCommand類有幾個全局屬性:函數

requires_project,表示該命令是否須要在project中才能執行;ui

crawler_process,CrawlerProcess類的實例,是一個抓取處理器,在一個抓取處理器中能運行多個抓取;命令行

default_settings,默認的配置;code

exitcode,退出狀態。繼承

另外,還有it

_crawler屬性,這個是一次抓取至少須要的一個抓取器;io

settings,用來保存抓取的配置。require

2、幾個成員函數

__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),執行一個具體的命令,具體執行內容由具體的命令實現模塊覆蓋,執行某一具體命令的入口。

3、總結

這個類是比較簡單的,做爲scrapy全部命令的基類,該類定義了一些共有的屬性,完成了一些共有的功能,另外對各命令的行爲作出了一些共有的限制。

相關文章
相關標籤/搜索