微信公众号数据采集实战:用 WechatSogou 爬虫接口自动抓取公众号与文章

【免费下载链接】WechatSogou 基于搜狗微信搜索的微信公众号爬虫接口 【免费下载链接】WechatSogou 项目地址: https://gitcode.com/gh_mirrors/we/WechatSogou

小陈在市场部做竞品分析,每天要盯 20 多个竞品公众号,手动打开每篇文章、复制标题、摘录摘要、记下发布时间。一上午过去,表格还没填满三分之一,手指却已经抽筋了。如果你也经历过这种「复制粘贴式加班」,那么接下来的十分钟,你会遇到一个叫 WechatSogou 的救星——它是一款基于搜狗微信搜索的 Python 爬虫接口,专治公众号数据采集的各种手忙脚乱。

一句话认识它:爬虫接口 = 你的公众号数据「代购」

WechatSogou 是一个开源 Python 库,帮你把「搜狗微信搜索」这个数据源封装成几个简单的函数。你只需要告诉它「查哪个公众号」「搜什么关键词」,它就把公众号信息、文章列表、热门内容整整齐齐地交到你手里。简单说,它替你完成微信公众号数据采集,而你只需要会写几行 Python。

先别急着问「难不难」,往下看,30 秒你就能跑通第一个例子。

WechatSogou 微信公众号数据采集接口获取公众号信息演示

动手前的两分钟准备

环境要求非常宽松:

  • Python 2.7 或 3.5+ 都可以
  • 需要联网(要走搜狗微信搜索)
  • 建议准备一个稳定的网络环境

安装只需要一条命令:

pip install wechatsogou --upgrade

装完顺手验证一下:

python -c "import wechatsogou; print(wechatsogou.__version__)"

能打印出版本号,就说明安装成功,可以继续了。核心代码都在 wechatsogou/ 目录下,想读源码的话重点看 api.py(对外接口)和 const.py(常量定义)。

复制就能跑的 30 秒入门

初始化接口、查一个公众号,就这么简单:

import wechatsogou

# 初始化 API(直连模式,无需任何配置)
api = wechatsogou.WechatSogouAPI()

# 查询公众号信息,参数传公众号名称或微信号
info = api.get_gzh_info('南航青年志愿者')

print(info['wechat_name'])    # 公众号名称
print(info['wechat_id'])      # 微信号
print(info['introduction'])   # 简介
print(info['authentication']) # 认证主体

运行后你会看到类似下面的输出:

南航青年志愿者
nanhangqinggong
南航大志愿活动的领跑者,为你提供校内外的志愿资源和精彩消息.
南京航空航天大学

是不是很像在调用一个查资料的函数?没错,微信公众号数据采集的第一行代码就这么写完了。它会自动处理请求、cookie、URL 解码这些脏活,你只管拿结果。

五个常用任务,从入门到进阶

1. 先学会「找人」:搜索公众号 📇

如果你只记得一个模糊的名字,用 search_gzh 按关键词搜:

results = api.search_gzh('南航')

for gzh in results:
    print(gzh['wechat_name'], gzh['wechat_id'], gzh['authentication'])

微信公众号数据采集之公众号搜索接口演示

每个结果都是一个字典,包含名称、微信号、认证、头像、简介等字段。拿到了 wechat_id,再配合 get_gzh_info 就能精确锁定目标。

2. 学会「找文」:跨公众号搜文章 🔍

只知道关键词、不知道是哪个号发的?search_article 直接全网搜文章,还支持按时间和类型筛选:

from wechatsogou import WechatSogouConst

# 搜最近一周发布的原创文章
articles = api.search_article(
    '数据分析',
    timesn=WechatSogouConst.search_article_time.week,   # 时间范围:一周
    article_type=WechatSogouConst.search_article_type.all,  # 文章类型
)

for item in articles:
    article = item['article']
    gzh = item['gzh']
    print(article['title'], '|', gzh['wechat_name'])

返回结构分 article(标题、链接、摘要、时间)和 gzh(来源公众号)两层,非常规整。timesnarticle_type 的常量都在 wechatsogou/const.py 里,想按「一天」「一个月」筛,改成 daymonth 就行。

WechatSogou 微信公众号文章搜索采集效果演示

3. 学会「收」:批量拉取某号的历史文章 📚

这是最常用的场景之一:get_gzh_article_by_history 一次把某公众号的最近群发文章连同公众号资料一起返回:

data = api.get_gzh_article_by_history('南航青年志愿者')

print(data['gzh']['wechat_name'])   # 公众号信息
for article in data['article'][:5]: # 最近 5 篇文章
    print(article['title'], article['datetime'])

注意返回的文章链接是临时链接,有效期有限,拿到的第一时间就去存正文(下面第 5 点会讲怎么存)。

WechatSogou 获取公众号历史文章用于数据采集的演示

4. 学会「逛」:追热门分类内容 🔥

想看看某个领域最近什么内容火?get_gzh_article_by_hot 按分类拉取热门文章:

hot = api.get_gzh_article_by_hot(WechatSogouConst.hot_index.technology)

for item in hot:
    print(item['article']['title'], '|', item['gzh']['wechat_name'])

hot_index 下内置了科技、财经、美食、体育、游戏等 20 多个分类常量,做行业热点分析时特别顺手。

WechatSogou 热门文章采集接口分类浏览演示

5. 学会「精」:关键词联想 + 保存文章正文 🎯

想拓宽选题思路,用 get_sugg 拿搜狗的关键词联想建议:

sugg = api.get_sugg('高考')
for s in sugg:
    print(s)

拿到文章链接后,再用 get_article_content 把正文抓下来,彻底摆脱「链接过期就啥也没有」的尴尬:

content = api.get_article_content(article_url)
print(content)  # 清洗后的正文文本

WechatSogou 关键词联想搜索辅助微信公众号数据采集演示

串起来:写一个「竞品监控小工具」

光看单个功能不过瘾,我们把这些接口串成一个完整的公众号数据采集小项目:每天早上跑一遍,自动抓取几个竞品公众号的最新文章,输出一份 JSON 报告。

import json
import time
import random

import wechatsogou

COMPETITORS = ['南航青年志愿者', '南京航空航天大学']

def collect():
    api = wechatsogou.WechatSogouAPI()
    report = {}

    for name in COMPETITORS:
        # 步骤 1:抓历史文章
        data = api.get_gzh_article_by_history(name)

        # 步骤 2:保存文章列表
        report[name] = {
            'gzh': data['gzh'],
            'articles': [
                {
                    'title': a['title'],
                    'time': a['datetime'],
                    'url': a['content_url'],
                }
                for a in data['article']
            ],
        }

        # 步骤 3:控制节奏,别把人家服务器逼急了
        time.sleep(random.uniform(2, 5))

    # 步骤 4:落盘存档
    with open('competitor_report.json', 'w', encoding='utf-8') as f:
        json.dump(report, f, ensure_ascii=False, indent=2)

    print('采集完成,共写入', len(report), '个公众号')

if __name__ == '__main__':
    collect()

跑完你就有了一份结构化的竞品公众号数据,后续无论是做报表还是做分析,都是从文件里读,再也不用天天手动复制了。这就是微信公众号数据采集从「手动」到「自动化」的完整闭环

新手最容易踩的五个坑

  1. 文章链接过期才后悔:搜狗返回的文章链接是临时链接,过期就打不开。正确姿势是拿到 content_url 后立刻用 get_article_content 保存正文。
  2. 以为能抓全部历史文章:通过搜狗接口只能获取公众号最近 10 条群发,这是平台限制。想积累更多历史,就得定期跑任务增量保存。
  3. 频繁请求被验证码拦下:爬太猛会触发验证码。初始化时可以调大重试次数 WechatSogouAPI(captcha_break_time=3),更根本的解决办法是放慢速度。
  4. 不懂加延迟被限流:连续请求不加等待,很容易被封。养成习惯,每次请求之间 time.sleep(random.uniform(2, 5))
  5. 直接取键报 KeyError:有些字段(如认证信息)可能不存在。取数据时多用 info.get('authentication', '未认证') 这种安全写法。

常见问题快问快答

Q:拿到文章链接后总是打不开,为什么? A:微信文章链接有时效性,过期即失效。建议拿到链接后立刻用 get_article_content 抓正文存本地,别囤链接。

Q:只能拿到 10 篇文章吗? A:是的,搜狗微信搜索接口只开放最近 10 条群发。想要更多,就把它做成定时任务,每天采一次累积起来。

Q:遇到验证码怎么办? A:库内置了验证码处理机制,可配置 captcha_break_time 增加重试次数;如果频繁出现,多半是请求太频繁,请降低频率或配置代理(proxies 参数直接透传给 requests)。

Q:支持 Python 2 还是 Python 3? A:都支持,2.7 和 3.5+ 都能用。

Q:要不要自己处理 User-Agent 这些头? A:不用,库内置了常用 UA 列表,你只需要在需要时传 headers 覆盖默认值即可。

把重复劳动交给代码,把时间留给自己

回到开头的小陈:如果早用上 WechatSogou,那一上午的复制粘贴就能压缩成一条命令。这个项目真正的价值不在于「爬」,而在于它把微信公众号数据采集的门槛降到了「会写几行 Python 就能上手」,剩下的时间你可以用来思考数据背后的业务,而不是消耗在机械操作上。

最后说句实在话:采集工具再方便,也要用在正道上。请合理控制请求频率、尊重平台规则和内容版权,不要对目标服务器造成压力,更不要用于侵犯他人权益的场景。工具无罪,使用有度。

现在,去 pip install wechatsogou,跑起你的第一行采集代码吧。你的第一个竞品监控小工具,值得今天就落地 🚀

【免费下载链接】WechatSogou 基于搜狗微信搜索的微信公众号爬虫接口 【免费下载链接】WechatSogou 项目地址: https://gitcode.com/gh_mirrors/we/WechatSogou

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐