Python.Scrapy.12-scrapy-source-code-analysis-part-2

Scrapy 源代码分析系列-2 signals, signalmanager, project, conf

1. 模块: signals.py signalmanager.py project.py conf.py

1.1 conf.py project.py

conf.py 是废弃的模块。她的功能由crawler.settings代替。 来自conf.py的代码如下:

1 if 'scrapy.cmdline' not in sys.modules:
2     from scrapy.utils.project import get_project_settings
3     settings = get_project_settings()
4 
5 import warnings
6 from scrapy.exceptions import ScrapyDeprecationWarning
7 warnings.warn("Module `scrapy.conf` is deprecated, use `crawler.settings` attribute instead",
8     ScrapyDeprecationWarning, stacklevel=2)

project.py 也是被废弃的模块。

1.2 interfaces.py

interfaces.py 定义了接口ISpiderManager, 接口方法如下:

def create(spider_name, **spider_args): 创建一个新的Spider对象。

def list(): 返回project中所有的spider。

def find_by_request(request): 处理request的sipder列表

该模块依赖: zope.interface (zope.interface), 关于该库另外进行分析。

1.3 signals.py signalmanager.py

signals.py 定义了一系列object类型的对象。

signalmanager.py 定义类SignalManager来管理signal。该类依赖 dispatcher 和 signal: 

1 from scrapy.xlib.pydispatch import dispatcher
2 from scrapy.utils import signal

那么需要分析子包: scrapy.xlib

To Be Continued

接下来分析模块: item.py link.py linkextractor.py log.py logformatter.py exceptions.py extension.py 

原文地址:https://www.cnblogs.com/cwgk/p/4649154.html