欢迎光临
我们一直在努力

Python 实战:如何合法提取单篇微信公众号文章内容

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

结论先行

合法提取单篇微信公众号文章内容,核心就三点:

  • 用对工具:wechat-article-parser 一行代码解析,自动提取标题、作者、正文 Markdown
  • 守住边界:只处理用户主动提供的单篇文章链接,不批量抓取、不商用
  • 理解风险:即便技术上可行,大规模抓取公众号内容已被多次判赔
  • 一、为什么选择单篇解析方案

    批量爬取微信公众号文章的“捷径”正在被全面封堵。腾讯在官网设置了 robots.txt 明确禁止爬虫抓取 ,多地法院已对爬取公众号数据的行为作出不正当竞争判决,判赔金额从几十万到数百万不等 。

    单篇解析不同。 它的场景是:用户主动复制一篇文章链接,通过工具完成格式转换(HTML → Markdown)。不涉及批量采集、不建立数据库、不对外提供数据服务。这在法律上的风险远低于“爬取所有文章”。

    二、核心工具:wechat-article-parser

    wechat-article-parser 是一个专门用于解析单篇公众号文章的 Python 库,安装简单,使用极简 。

    安装

    pip install wechat-article-parser

    依赖自动安装:httpx、beautifulsoup4、markdownify。Python 版本要求 ≥ 3.10 。

    基础用法:三行代码搞定

    from wechat_article_parser import parse

    result = parse("https://mp.weixin.qq.com/s/xxxxx")
    print(result.article_title)
    print(result.article_markdown)

    parse() 返回一个 ArticleResult 对象,包含以下关键字段 :

    字段说明
    article_title 文章标题
    article_markdown 正文 Markdown 格式
    article_publish_time 发布时间(Unix 时间戳)
    mp_name 公众号名称
    images 文章中所有图片链接
    is_valid 解析是否成功

    异步调用

    如果你在异步环境中使用:

    from wechat_article_parser import parse_async

    result = await parse_async("https://mp.weixin.qq.com/s/xxxxx")

    常用参数

    result = parse(
    "https://mp.weixin.qq.com/s/xxxxx",
    timeout=30, # 超时时间(秒),默认 15
    include_raw_html=False, # 是否返回原始 HTML
    proxy=None, # 需要代理时传入
    )

    三、完整实战脚本

    以下是一个“复制链接 → 运行脚本 → 得到 Markdown 文件”的完整示例:

    # save_article.py
    import sys
    from pathlib import Path
    from wechat_article_parser import parse

    def save_article(url: str, output_dir: str = "./articles"):
    """提取单篇公众号文章并保存为 Markdown"""
    result = parse(url)

    if not result.is_valid:
    print("解析失败,请检查链接是否有效")
    return

    output = Path(output_dir)
    output.mkdir(parents=True, exist_ok=True)

    # 用标题作为文件名(去除非法字符)
    safe_title = "".join(c for c in result.article_title if c not in r'\\/:*?"<>|')
    filepath = output / f"{safe_title}.md"

    with open(filepath, "w", encoding="utf-8") as f:
    f.write(f"# {result.article_title}\\n\\n")
    f.write(f"> 公众号:{result.mp_name}\\n\\n")
    f.write(result.article_markdown)

    print(f"已保存:{filepath}")
    print(f"图片数量:{len(result.images)}")

    if __name__ == "__main__":
    if len(sys.argv) < 2:
    print("用法:python save_article.py <公众号文章链接>")
    sys.exit(1)
    save_article(sys.argv[1])

    使用方式:

    python save_article.py "https://mp.weixin.qq.com/s/xxxxx"

    运行后,./articles/ 目录下会生成对应的 Markdown 文件。

    四、合规边界(必须遵守)

    合法提取单篇文章的前提条件:

    可以做不可以做
    用户主动提供链接,单篇解析 批量抓取某个公众号的所有文章
    个人学习、研究、存档 对外提供数据服务或商业使用
    控制访问频率(每篇间隔数秒) 高频并发请求,给服务器造成压力
    解析后仅本地保存 将内容公开发布、二次分发

    法律依据很明确:法院在相关判例中指出,“允许数据抓取是为了保障公众获取信息,不意味着允许营利性商用” 。单篇解析属于“用户自行访问并保存”的合理范畴,但一旦变成批量采集或商业利用,性质就完全不同了。

    五、常见问题

    Q:解析失败怎么办?

    微信有反爬机制,偶尔会拒绝请求。等待几分钟后重试即可,不要频繁重试 。

    Q:能提取图片吗?

    result.images 返回所有图片链接,但微信图片有防盗链,直接下载可能失败。需要额外处理 Referer 头。

    Q:能解析视频号内容吗?

    wechat-article-parser 支持视频分享类文章,但视频文件本身需要单独处理 。

    Q:有没有其他替代工具?

    WeSpy 也支持单篇解析和 Markdown 导出,且有命令行界面 。wechat-article-parser 的优势是 API 更简洁、返回字段更完整。

    总结

    合法提取单篇公众号文章,技术上的核心就是一个库:wechat-article-parser。三行代码拿到 Markdown 正文,字段齐全,安装即用。

    真正的门槛不在技术,而在场景界定:用户给链接、你给解析、本地保存、不碰批量、不碰商用。守住这条线,这个工具就是一个实用的“文章格式转换器”,而不是一个高风险的数据采集器。

    赞(0)
    未经允许不得转载:171主机测评 » Python 实战:如何合法提取单篇微信公众号文章内容
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址