雏形代码结构
  # 代码实现分析
# 目标
- 掌握模块之间的关系
 - 实现自己框架的代码结构
 
# 1 明确模块之间的逻辑关系
五个核心模块和三个内置的对象是关键模块,需要优先实现
先抛开中间件,分析下它们之间的逻辑关系是:
- 构造spider中start_urls中的请求
 - 传递给调取器进行保存,之后从中取出
 - 取出的request对象交给下载的进行下载,返回response
 - response交给爬虫模块进行解析,提取结果
 - 如果结果是request对象,重新交给调度器,如果结果是item对象,交给管道处理
 
以上的逻辑是在引擎中完成的
对应的他们在引擎中的逻辑如下图:

# 2 设计代码结构
- 首先给框架起一个名称,如:
 
 scrapy_plus 
 1
继续分类以及解耦的设计思想:
- 把核心模块放置在一起
 - 请求对象模块和响应对象模块统一作为http模块
 - 数据对象单独作为一个分类
 
代码结构如下:
    -- scrapy_plus
  -- __init__.py
  -- core
    -- __init__.py
    -- spider.py
    -- scheduler.py
    -- downloader.py
    -- pipeline.py
    -- engine.py
  -- http
    -- __init__.py
    -- request.py
    -- response.py
  -- item.py 
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
到这里,我们完成了框架的大致结构是设计,那么接下来我们就需要实现模块中的具体内容了
# 小结
- 掌握模块之间的逻辑关系
 
编辑  (opens new window)