Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

    • 爬虫的基础知识

    • 请求的发送方法

    • 数据提取方法

    • 高性能爬虫

    • selenium

    • 反爬以及解决方案

    • MONGODB数据库

    • scrapy框架

    • scrapy_redis

    • 爬虫的部署

    • 爬虫框架开发分析

      • 了解框架
      • 框架设计思路分析
      • 雏形代码结构
        • 代码实现分析
          • 目标
          • 1 明确模块之间的逻辑关系
          • 2 设计代码结构
          • 小结
    • 框架雏形实现

    • 框架功能完善

    • 框架功能升级

    • 项目实战

    • pywin32介绍

  • 前端教程

  • 教程
  • Python爬虫
  • 爬虫框架开发分析
wangmings
2022-07-19
目录

雏形代码结构

# 代码实现分析

# 目标
  1. 掌握模块之间的关系
  2. 实现自己框架的代码结构

# 1 明确模块之间的逻辑关系

五个核心模块和三个内置的对象是关键模块,需要优先实现

先抛开中间件,分析下它们之间的逻辑关系是:

  1. 构造spider中start_urls中的请求
  2. 传递给调取器进行保存,之后从中取出
  3. 取出的request对象交给下载的进行下载,返回response
  4. response交给爬虫模块进行解析,提取结果
  5. 如果结果是request对象,重新交给调度器,如果结果是item对象,交给管道处理

以上的逻辑是在引擎中完成的

对应的他们在引擎中的逻辑如下图:

框架五大核心组件逻辑关系流程图

# 2 设计代码结构

  1. 首先给框架起一个名称,如:
 scrapy_plus 
1
  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

到这里,我们完成了框架的大致结构是设计,那么接下来我们就需要实现模块中的具体内容了


# 小结

  1. 掌握模块之间的逻辑关系
编辑 (opens new window)
框架设计思路分析
http模块和item模块

← 框架设计思路分析 http模块和item模块→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式