# py-chan · 缠论《教你炒股票》抓取器 抓取 [kline8.com/chanlun](https://www.kline8.com/chanlun?p=0) 上缠中说禅 《教你炒股票》系列全部 108 课原文,转换为结构化数据,并直接写入 Vue 阅读站 [`D:\code\chan`](../chan),在 `http://localhost:5173/chanlun` 展示。 > `p=0` 是目录页,`p=1`…`p=108` 依次对应第 1~108 课。 ## 依赖 ```bash pip install -r requirements.txt ``` ## 使用 ```bash python main.py # 全量抓取(带缓存,可重复运行) python main.py --limit 3 # 仅抓前 3 篇,联调测试 python main.py --refresh # 忽略缓存重新抓取 python main.py --no-images # 不下载图片,正文保留远程链接 ``` ## 产物 | 路径 | 说明 | | --- | --- | | `data/raw/p001.html …` | 原始 HTML 归档 | | `data/markdown/ke-001.md …` | 每篇 Markdown 归档 | | `data/articles.json` | 全量结构化数据 | | `D:\code\chan\src\data\chanlun.ts` | Vue 数据源(首次运行会自动备份示例为 `chanlun.sample.ts`) | | `D:\code\chan\public\chanlun-img\…` | 本地化图片 | ## 模块 - `config.py` —— 站点、请求、产物路径等常量 - `fetcher.py` —— 带限速 / 重试 / SSL 回退的 HTTP 抓取 - `parser.py` —— 目录页与文章页解析,产出 `Article` 结构 - `converter.py` —— 正文 HTML → Markdown(含行内样式与图片) - `writer.py` —— 图片本地化、TS 数据文件、JSON 输出 - `main.py` —— 命令行入口与编排 抓取后到 `D:\code\chan` 运行 `pnpm dev`,访问 `http://localhost:5173/chanlun` 即可看到全部 108 课;点击任意一篇进入沉浸式阅读页。