个人爬虫实战项目合集。每个子目录都是一个独立完成的小项目,覆盖 requests 静态抓取、xpath/jsonpath 解析、浏览器自动化(DrissionPage)、JS 逆向还原加签、音视频分离下载等方向。
配套的章节笔记与知识点练习在另一个仓库:python-spider。 本仓库只放综合实战项目。
| # | 项目 | 技术路线 | 核心内容 |
|---|---|---|---|
| 01 | B站热门榜单采集与热度监控系统 | DrissionPage 浏览器自动化 | 驱动真实 Chrome 采集 B站 20 个分区热门榜单(100 条/分区),落盘 CSV,两轮快照比对输出播放量增长与排名变化 |
| 02 | 唯品会商品数据采集与价格监控系统 | requests + JS 逆向 | PyExecJS 调用还原后的加签算法绕过风控,实现品牌商品分页采集与价格异动监控 |
| 03 | 视频爬取练习 | JS 逆向 + 音视频处理 | 逆向视频站点的解密逻辑(decrypt.js / decrypt_video.js),TS 分片并发下载后交给 ffmpeg 合流 |
| 04 | 外来物种入侵多网站 | requests + jsonpath + BeautifulSoup | 跨多个政府站点(农业农村部、湖北省人民政府、湖北省林业局)采集政策文件,统一清洗后输出 CSV |
| 05 | 摸头表情包自动处理 | DrissionPage | 批量把 image/ 中的图片提交给在线 petpet 生成器,回存摸头 GIF 到 output/ |
每个项目独立自洽,仓库层面只约定四样东西:
Python 爬虫项目/
├─ <项目名>/
│ ├─ README.md # 项目说明(目标站点 / 难点 / 用法)
│ ├─ main.py # 入口
│ ├─ requirements.txt # 该项目依赖
│ ├─ output/ # 运行产出(CSV / 图片 / 音视频),不进仓库
│ └─ 其他文件 # 项目自有模块,见下
└─ .gitignore
除以上四项之外的一切文件,都是「项目自有模块」,由各项目按自身需要组织,不构成跨项目的通用约定。例如:
外来物种入侵多网站/拆成moa.py/hubei.py/hubei_forestry.py三个站点脚本,由main.py统一分发;- 逆向类项目会带上自己的
*.js产物(如vip_apisign.js、decrypt.js)。
这类文件在各项目自己的 README 中有说明,本文件不做统一约束。
仓库只保留代码。 采集产出(CSV / XLSX / 图片 / 音视频)体积大且涉及版权,统一由 .gitignore 排除,需要数据请本地跑一遍脚本。
- Python 3.9+
- 主要依赖:
| 依赖 | 用途 |
|---|---|
requests |
静态接口抓取,用得最多 |
DrissionPage |
浏览器自动化(需本机有 Chrome / Edge) |
PyExecJS2 |
在 Python 中执行 JS,JS 逆向的核心工具(需本机装 Node.js) |
jsonpath-ng / jsonpath |
从 JSON 响应按表达式提取数据 |
beautifulsoup4 + lxml |
HTML 解析与正文抽取 |
补充说明:
- 两个 JS 逆向项目运行时需要本机装 Node.js;
视频爬取练习还需要本机装 ffmpeg 并加入PATH;- 各项目依赖以其目录下的
requirements.txt为准。
- 所有项目仅用于个人技术学习,采集内容均为公开可访问信息,未触碰需要登录才能访问的私有内容。
- 代码中的请求频率均做了主动限制(如
SLEEP_MIN/SLEEP_MAX),避免对目标站点造成压力。 - 部分项目(如唯品会)依赖站点加签算法,站点改版后可能失效。
- 唯品会
main.py中的默认 Cookie 仅为本地跑通用的历史值,已失效;实际使用时可用同目录cookie.txt覆盖。