first commit

This commit is contained in:
2026-08-11 16:18:44 +08:00
commit 5cc322a598
231 changed files with 33294 additions and 0 deletions

44
README.md Normal file
View File

@@ -0,0 +1,44 @@
# 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` 依次对应第 1108 课。
## 依赖
```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 课;点击任意一篇进入沉浸式阅读页。