MapFlow

PUBLIC LEARNING ROADMAP

单片机(C++/嵌入式)与 Python 爬虫开发 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

25 个知识节点 · intermediate

发布者:qwx

知识目录

核心技能

Python 面向对象与代码组织进阶

在已会基础语法之上巩固类、继承、封装与模块划分,为工程化爬虫代码打底

建议预留 90 分钟

学习目标

  • 掌握类、继承、封装与魔法方法
  • 学会按职责拆分模块组织代码

关键概念

  • 类与对象
  • 继承与组合
  • 模块导入
  • 魔法方法

为什么学习

  • 爬虫项目需要以类/模块组织配置、解析器与调度逻辑,需理解封装而非只会写脚本

如何检验理解

  • 能将一段零散爬虫脚本重构为含类的可复用模块

基础概念

C++ 基础语法与类型系统

从零进入静态强类型语言:变量、类型、作用域、IO 与 C++ 程序结构

建议预留 150 分钟

学习目标

  • 掌握 C++ 变量、类型、表达式与控制流
  • 理解头文件/源文件、作用域与命名空间

关键概念

  • 静态类型
  • 头文件分离
  • 命名空间
  • 标准IO

为什么学习

  • 学习者零基础学 C++,需先建立静态类型与翻译单元心智模型,整个嵌入式主线都依赖此

如何检验理解

  • 能编译运行一个包含多数据类型函数与标准IO的C++小程序

基础概念

硬件与电路基础(电平/上拉/驱动)

读懂原理图与基本电子概念,为操作 GPIO、感知外部信号建立前提

建议预留 120 分钟

学习目标

  • 理解电平、上/下拉电阻与驱动能力
  • 能阅读基础原理图符号与引脚定义

关键概念

  • 高低电平
  • 上下拉电阻
  • 驱动电路
  • 原理图阅读

为什么学习

  • 外设驱动需理解高低电平、上下拉与驱动能力,为目标要求的硬件基础入门做铺垫

如何检验理解

  • 能对照原理图说出某个引脚通过上下拉电阻连接的外部电路状态

基础概念

Git 版本管理与项目协作

用 Git 管理两类项目代码历史,保障独立开发可回溯

建议预留 90 分钟

学习目标

  • 掌握 add/commit/branch/merge/reset
  • 能写清晰 commit 并维护项目历史

关键概念

  • 提交
  • 分支
  • 合并冲突
  • 远程仓库

为什么学习

  • 目标要求熟练版本管理,贯穿软硬件两个项目,需作为贯穿性工具先掌握

如何检验理解

  • 能为爬虫与固件项目分别建仓库并完成提交、分支与回滚

核心技能

Python 异常处理、日志与调试

稳定采集的关键:捕获网络/解析异常、记录日志、定位Bug

建议预留 90 分钟

学习目标

  • 掌握 try/except/finally 与自定义异常
  • 学会 logging 分级记录与 pdb/print 排查

关键概念

  • 异常体系
  • logging
  • 断点调试
  • 超时重试

为什么学习

  • 爬虫运行环境多变(断网/改版/超时),必须具备健壮异常与日志技能才能长时间稳定跑

如何检验理解

  • 为一个爬虫接入日志与异常兜底,模拟断网/超时后程序不崩溃且记录原因

核心技能

Python 标准库与实用工具

熟练 os/re/json/collections/datetime 等库,作为爬虫数据清洗与文件处理的底层工具

建议预留 90 分钟

学习目标

  • 掌握 json 序列化与反序列化
  • 学会用 re/os/datetime 处理文件路径与字符串

关键概念

  • json
  • re
  • os/pathlib
  • datetime

为什么学习

  • 爬虫需要读写文件、正则匹配、JSON解析与时间处理,是数据抽取的必需基础

如何检验理解

  • 能用 json/os/re 完成一次离线数据的读取、字段提取与再写入

核心技能

C++ 编译链接与工程结构

理解预处理、编译、链接与C++构建流程,配合IDE完成工程配置编译

建议预留 120 分钟

学习目标

  • 理解预处理-编译-汇编-链接流程
  • 了解 CMake/Make 或 IDE 工程配置基本结构

关键概念

  • 预处理器
  • 编译与链接
  • 链接脚本
  • 构建工具

为什么学习

  • 嵌入式需配置编译目标与链接脚本,理解编译链接是能构建固件的必备前提

如何检验理解

  • 能新增/删除源文件并成功配置编译链接出可执行文件,解释链接错误含义

基础概念

C++ 指针、引用与内存模型

深入栈/堆、地址、指针与引用,理解嵌入式寄存器与内存映射的根基

建议预留 150 分钟

学习目标

  • 掌握指针/引用语义与栈堆区别
  • 理解通过地址访问外设映射寄存器的思想

关键概念

  • 指针与引用
  • 栈与堆
  • 地址空间
  • 内存映射I/O

为什么学习

  • 固件通过指针访问映射寄存器地址,内存/地址心智是驱动开发绕不开的核心理解

如何检验理解

  • 能解释指针解引用、取地址与数组衰减,并写出访问某映射地址的示例

核心技能

HTTP 协议原理与 requests 实战

理解请求/响应、状态码、Headers、Cookie,用 requests 发请求拿到目标内容

建议预留 120 分钟

学习目标

  • 理解请求行/头/体与响应状态
  • 掌握 requests 的 GET/POST/超时/编码处理

关键概念

  • HTTP状态码
  • 请求头
  • requests库
  • 响应体编码

为什么学习

  • 爬虫第一步是正确发送HTTP请求并解析响应,属必备核心能力

如何检验理解

  • 能对一个目标站点查看抓包并构造带headers的GET/POST成功取回并打印内容

核心技能

数组、结构体、字符串与位操作

C/C++ 的连续内存容器、struct 布局与位操作,直接支撑寄存器驱动

建议预留 120 分钟

学习目标

  • 掌握数组/字符串/C风格字符指针
  • 理解 struct 布局与按位逻辑运算

关键概念

  • 结构体
  • 位域
  • 位运算
  • 数组指针

为什么学习

  • 寄存器赋值需用指针辅助结构体访问内存与位域,位操作是外设驱动直接手段

如何检验理解

  • 能定义结构体并配合指针读写指定内存位,或完成设位/清位/翻转操作

核心技能

单片机体系结构与寄存器(时钟/存储器映射)

理解 CPU 内核、时钟树、存储器映射与寄存器编程模型,打通软硬件边界

建议预留 180 分钟

学习目标

  • 理解内核、时钟树与存储器映射
  • 掌握按数据手册读写寄存器地址的方法

关键概念

  • 寄存器映射
  • 时钟树
  • 总线与外设
  • 存储器映射

为什么学习

  • 单片机开发核心是理解寄存器与时钟配置,是所有外设驱动的地基

如何检验理解

  • 能对照数据手册定位某外设基地址与寄存器并说明时钟使能必要性

核心技能

网页解析与数据字段提取

用 BeautifulSoup/正则/XPath 从 HTML、接口响应中精准定位并抽取目标字段

建议预留 150 分钟

学习目标

  • 掌握 BeautifulSoup 与 find/select 定位
  • 会用 XPath/lxml 与正则做补充提取

关键概念

  • BeautifulSoup
  • CSS选择器
  • XPath
  • 正则
  • JSON解析

为什么学习

  • 数据抽取正确性是爬虫核心价值,需会用多种定位手段

如何检验理解

  • 能从真实列表页抽取多条记录的结构化字段并正确清洗

补充知识

C++ 面向对象与封装(嵌入式适用)

类、结构体化封装与基础对象组织,适合 Arduino 类嵌入式 C++ 轻量使用

建议预留 90 分钟

学习目标

  • 掌握类、方法与封装
  • 理解嵌入式C++轻量化OOP用法边界

关键概念

  • 类与对象
  • 构造函数
  • 封装

为什么学习

  • 多数 MCU 固件以 C 风格加封装结构体为主,完整 OOP/虚函数与嵌入式实战关联低故归补充

如何检验理解

  • 能用类和构造为 GPIO 或外设封装为可复用对象并在小例中调用

核心技能

GPIO 驱动与 LED/按键(位操作/消抖)

配置 GPIO 输入输出、位操作控制 LED 并检测按键,含软件消抖

建议预留 150 分钟

学习目标

  • 配置输入输出、理解推挽/开漏模式
  • 实现按位寄存器读写与按键消抖

关键概念

  • GPIO配置
  • 位带操作
  • 消抖
  • 上拉输入

为什么学习

  • GPIO 是所有外设的基础,完成寄存器级或库级配置即标志入门可用

如何检验理解

  • 实现 LED 点亮与按键消抖切换状态的完整可运行例程

核心技能

中断系统与定时器

掌握外设中断、优先级与定时器计数,实现延时与事件响应

建议预留 150 分钟

学习目标

  • 掌握中断向量与优先级配置
  • 配置定时器溢出/比较中断实现延时采样

关键概念

  • 中断向量
  • NVIC
  • TIM溢出
  • 回调函数

为什么学习

  • 中断与定时器是单片机核心机制,是传感器采样与多任务处理必需的

如何检验理解

  • 配置定时器产生中断实现周期任务与毫秒级延时

核心技能

UART 串口通信驱动

编写串口收发驱动,实现数据输出与主机通信

建议预留 150 分钟

学习目标

  • 配置串口波特率与收发
  • 区分中断与轮询两种收发模式

关键概念

  • USART
  • 波特率
  • 串口调试
  • 收发缓冲

为什么学习

  • 串口是调试与数据通信通路,目标要求能实现数据收发控制

如何检验理解

  • 配置 USART 实现板间或电脑串口收发并打印数据

核心技能

I2C/SPI 总线协议与传感器接入

理解 I2C/SPI 时序与从机寻址,驱动常见传感器读回数据

建议预留 150 分钟

学习目标

  • 理解 I2C 地址与读写时序
  • 实现 SPI 寄存器读写驱动并读回数值

关键概念

  • I2C时序
  • SPI片选
  • 寄存器外设
  • 数据readback

为什么学习

  • 绝大多数传感器走 I2C/SPI,是外设驱动目标的核心覆盖项

如何检验理解

  • 用 I2C 读取温湿度或加速度计数据并校正输出数值

核心技能

单片机工具链(CubeMX/IDE 与调试)

掌握 CubeMX 配置、IDE 编译下载与仿真器断点调试等完整工具链

建议预留 150 分钟

学习目标

  • 用 HAL/CubeMX 生成外设配置
  • 掌握下载器与断点/Watch 调试

关键概念

  • STM32CubeMX
  • HAL库
  • SWD下载
  • 调试监视

为什么学习

  • 工具链熟练是目标显性要求,配置工程并完成下载与在线调试贯穿所有开发

如何检验理解

  • 能用 CubeMX 生成工程并在 IDE 中编译、烧录、设断点单步查看寄存器

补充知识

会话管理、登录与反爬基础

处理 Cookie/Session/Headers 伪造、验证码与动态token等常见反爬(入门级)

建议预留 150 分钟

学习目标

  • 掌握 Session 复用与 Cookie 提取
  • 了解验证码与动态token常见绕过思路

关键概念

  • Session与Cookie
  • 请求头伪造
  • User-Agent
  • token

为什么学习

  • 目标要求能独立采集,需处理常规反爬门槛;因属进阶对抗要求入门即可故归补充

如何检验理解

  • 能维持登录态会话抓取需认证内容,并绕过简单请求头/UA校验

补充知识

数据清洗与存储(SQLite/去重)

将抽取结果结构化入库并按规则去重、异常清洗

建议预留 120 分钟

学习目标

  • 掌握 SQLite 建表与增删查
  • 会用去重策略与基础清洗

关键概念

  • SQLite
  • 数据去重
  • 清洗
  • SQL基础

为什么学习

  • 采集结果需可靠入库并去重,属目标要求的可用能力,非爬虫主干故归补充

如何检验理解

  • 能将批量爬取结果写入SQLite并实现按主键/指纹去重

补充知识

STL 基础容器(string/vector)

入门 string、vector 等 STL 基本使用,作为非实时场景辅助组织数据

建议预留 90 分钟

学习目标

  • 认识 string/vector 基础用法
  • 了解 C++ 与 C 容器差异及嵌入式取舍

关键概念

  • string
  • vector
  • 迭代器

为什么学习

  • 裸机 MCU 资源受限常用自带容器或C风格,完整 STL 与固件主线弱相关故降为补充、仅需认识

如何检验理解

  • 能认出并简单使用 string/vector 的基础接口

核心技能

板级集成实战项目(传感器+显示+通信)

综合多外设完成一个含传感器采集、显示与通信的完整单片机固件项目

建议预留 300 分钟

学习目标

  • 拆解任务设计外设协同联调
  • 综合运用驱动、中断与调试排障交付

关键概念

  • 多外设协同
  • 系统集成
  • 联调排障
  • 健壮性

为什么学习

  • 毕业目标:能独立实现端到端单片机项目,需综合 GPIO/中断/定时器/串口/总线与调试

如何检验理解

  • 独立完成含传感器+OLED显示+串口上报的完整固件并正常长期运行

补充知识

多线程/异步并发采集与限速

用 threading/aiohttp 配合限速与重试提升采集效率

建议预留 150 分钟

学习目标

  • 理解 threading 与 asyncio/aiohttp 差异
  • 学会限速、重试与并发安全控制

关键概念

  • 线程
  • asyncio
  • GIL
  • 限速与重试

为什么学习

  • 规模化采集需并发与合规限速,涉及GIL与异步模型较复杂,理解原理并会用即可

如何检验理解

  • 能将单线程爬虫改造为受频率约束的多线程或异步版本并观察吞吐提升

核心技能

Scrapy 框架工程化爬虫

用 Scrapy 的 Spider/Item/Pipeline 搭建可扩展采集项目

建议预留 150 分钟

学习目标

  • 掌握 Scrapy 项目与 Spider 生命周期
  • 会用 Item/Pipeline/Middleware 组织流程

关键概念

  • Spider
  • ItemPipeline
  • Selector
  • DownloaderMiddleware

为什么学习

  • 目标要求能用 Scrapy 构建可扩展采集项目,是爬虫工程化落地的主能力

如何检验理解

  • 能新建 Scrapy 项目并实现一个含 Item + Pipeline + 中间件的完整爬虫

核心技能

综合爬虫项目实战(闭环交付)

独立规划需求、实现采集、清洗入库到异常处理的完整爬虫项目

建议预留 240 分钟

学习目标

  • 能拆解需求设计爬虫架构
  • 综合运用反爬、并发、存储完成交付

关键概念

  • 需求分析
  • 模块设计
  • 健壮性
  • 交付文档

为什么学习

  • 毕业能力标准:能独立完成从需求到交付的完整爬虫项目,需跨知识综合分析

如何检验理解

  • 独立从零完成一个含数据爬取、清洗、入库并有日志与重试的可交付项目

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。