# 用代码抓 mp.weixin.qq.com 文章，总是拿不到正文或提示环境异常，怎么办？

> 服务器上请求公众号文章链接，常常返回环境异常验证页或空正文。传一个 mp.weixin.qq.com 链接，拿回标题、全文、公众号和发布时间的办法。

网页版：https://okdata.online/zh/answers/wechat-article-full-text-from-link/

**简短回答：**把链接交给公众号文章详情接口，就能拿回标题、纯文本全文、所属公众号和发布时间，每篇 $0.02，1,000 个链接 $20.00。/s/ 开头的短链接和带 __biz 的长链接都能用，已删除的文章返回 not_found，不收费。

同事往表格里贴了 200 个公众号文章链接，让你每篇写一句话总结。在自己电脑上用 `requests.get` 试了几个都正常，一放到服务器上，要么返回一个写着当前环境异常、完成验证后才能继续访问的页面，要么 HTML 里正文在，却是隐藏的，要等 JavaScript 渲染。[公众号文章详情](/zh/apis/wechat_mp/articles/get/)把这些都绕过去了：传链接，拿文章。

## 返回什么

| 字段 | 内容 |
|---|---|
| `title` | 文章标题 |
| `text` | 纯文本全文，段落各占一行 |
| `published_at` | 发布时间，ISO 8601 格式 |
| `author` | 所属公众号：原始 ID（gh_ 开头）和名称 |
| `images` | 封面图地址 |
| `ext`（加 `view=full`） | 作者署名、摘要、原创还是转载、原文链接 |

正文里的图片不返回，阅读数和点赞数也不在这里，那些要从[公众号历史文章](/zh/apis/wechat_mp/accounts/articles/list/)里拿。

## 抓一个链接

```bash
curl -G "https://api.okdata.online/v1/wechat_mp/articles/get" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode "url=https://mp.weixin.qq.com/s/xxxxxxxx" \
  --data-urlencode "fields=title,text,published_at,author.name"
```

长链接一定要用 `--data-urlencode`，不然里面的 `&` 会把参数截断。

## 费用

| 批量 | 调用 | 费用 |
|---|---|---|
| 1 个链接 | 1 | $0.02 |
| 表格里的 200 个链接 | 200 | $4.00 |
| 1,000 个链接 | 1,000 | $20.00 |

指向已删除、已被屏蔽文章的链接返回 `not_found`，不收费。超时也从不收费，用同一个 Idempotency-Key 重试，就不可能扣两次钱。

## 容易踩的坑

- **链接格式。** 短链接（`/s/AbCdEf…`）和长链接（`/s?__biz=…&mid=…&idx=…&sn=…`）都行。从微信里复制出来的链接有时带一串追踪参数，不影响。
- **一篇文章多个链接。** 同一篇文章可能以好几个不同的地址被分享出去。去重用返回的 `id`，别用你传进去的链接。
- **文本不可信。** 如果交给模型读，要讲明文章内容只是资料，不是给它的指令。
- **版权。** 做摘要、做研究没问题，整篇转载要作者授权。

## 什么时候自己抓更合适

每周几十个链接、从家里的网络发请求，普通 HTTP 请求加解析 `js_content` 元素多半能成，还不花钱。量一大或者换到云服务器上就不灵了，这时候用 API 才省事。如果你只是想让 AI 助手帮你读链接、不想写代码，接上 [MCP 服务](/zh/mcp/)，把链接贴进对话就行。

## 用到的接口

- [公众号文章详情](https://okdata.online/zh/apis/wechat_mp/articles/get/) `wechat_mp.articles.get`：$0.02/次

更新于 2026-11-12
