ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

保姆级 WechatSogou 爬虫库教程:批量采集公众号信息、历史文章与热门内容

保姆级 WechatSogou 爬虫库教程:批量采集公众号信息、历史文章与热门内容 保姆级 WechatSogou 爬虫库教程批量采集公众号信息、历史文章与热门内容【免费下载链接】WechatSogou基于搜狗微信搜索的微信公众号爬虫接口项目地址: https://gitcode.com/gh_mirrors/we/WechatSogouWechatSogou 是一个基于搜狗微信搜索的微信公众号爬虫库把「搜公众号、搜文章、抓历史推送、看热门内容、提取正文」这些原本要在浏览器里来回折腾的活儿封装成了几个干净的 Python 方法。这篇文章换个讲法先给你看成品效果再倒推一步步怎么实现最后手写一个能自动落盘保存数据的公众号监控小助手。全程代码可复制可运行跟着敲一遍你就能自己上手。先看结果一行代码拿到公众号完整档案你可能有这种经历想分析某个公众号得先打开搜狗微信搜名字再点进主页把简介、认证、二维码挨个截图保存。手慢一点页面还可能弹验证码。用 WechatSogou这件事压缩成一行import wechatsogou api wechatsogou.WechatSogouAPI() info api.get_gzh_info(南航青年志愿者) print(info)跑出来的结果就是下面这张图的样子返回的是一个字典字段全给你拆好了{ wechat_name: 南航青年志愿者, # 公众号名称 wechat_id: nanhangqinggong, # 微信号 introduction: ..., # 简介 authentication: 南京航空航天大学, # 认证主体 profile_url: ..., # 最近10条群发页链接 qrcode: ..., # 二维码图片链接 headimage: ..., # 头像 post_perm: 26, # 最近一月群发数 }你不需要关心请求怎么发、页面怎么解析库内部全处理好了。下面咱们倒推回去看看想拿到这份数据从零要准备什么。三步装好环境初始化 API 实例第一步安装。直接走 pip一行命令pip install wechatsogou --upgrade第二步创建实例。默认配置零参数就能用api wechatsogou.WechatSogouAPI()第三步按需调参。构造函数里的参数不多但都挺关键# 验证码输错重试 3 次默认 1 次 api wechatsogou.WechatSogouAPI(captcha_break_time3) # 所有 requests 的参数都能透传比如超时和代理 api wechatsogou.WechatSogouAPI(timeout15, proxies{ http: http://127.0.0.1:8888, https: http://127.0.0.1:8888, })captcha_break_time是验证码重试次数建议设成 2~3既给足容错又不会反复挑战风控。代理和超时是批量采集时的保命配置后面进阶部分会细说。记住 6 个方法公众号数据随便取get_gzh_info只是开胃菜。整个库的核心方法都挂在同一个api对象上咱们按使用频率挨个过。① 模糊搜公众号search_gzh只记得公众号名字的一部分直接搜返回列表翻页用page参数results api.search_gzh(南京航空航天大学, page1) for gzh in results: print(gzh[wechat_name], gzh[wechat_id])② 带条件筛文章search_article搜文章是这个库的重头戏可以叠加时间范围和内容类型两个筛选条件。时间常量在WechatSogouConst.search_article_time里day / week / month / year / specific内容类型在search_article_type里image 有图 / video 有视频 / rich 图文都有 / all 不限from wechatsogou import WechatSogouConst # 搜最近一周、带图的数据分析文章 articles api.search_article( 数据分析, timesnWechatSogouConst.search_article_time.week, article_typeWechatSogouConst.search_article_type.image, ) for item in articles: print(item[article][title], -, item[gzh][wechat_name])每条结果长这样article里是标题、链接、摘要、推送时间戳、配图列表gzh里是公众号名称、头像、是否加 V。搜公众号搜文章共用一张截图见下③ 拉历史推送get_gzh_article_by_history想盯住某个公众号最近发了什么这一个方法就够。传入公众号名称或微信号它会自动先搜出主页链接再抓最近 10 条群发记录data api.get_gzh_article_by_history(南航青年志愿者) print(data[gzh][wechat_name], 共, len(data[article]), 篇文章) for article in data[article]: print(article[title], |, article[datetime])每篇文章还带content_url文章链接、cover封面图、author、copyright_stat是否原创等字段做内容库绰绰有余。④ 蹭热门内容get_gzh_article_by_hot不知道搜什么直接看搜狗微信首页的排行榜。分类常量在WechatSogouConst.hot_index里从科技、财经到美食、萌宠一共 20 多个hot api.get_gzh_article_by_hot(WechatSogouConst.hot_index.technology) for item in hot: print(item[article][title], 来自, item[gzh][wechat_name])⑤ 抢救正文内容get_article_content微信文章链接有有效期过期就 404。所以拿到链接后建议趁热把正文抓下来存好这正是get_article_content的用途content api.get_article_content(article_url) html content[content_html] # 处理后的正文 HTML img_list content[content_img_list] # 正文里的图片列表还可以顺手删掉正文里插入的 QQ 音乐和语音del_qqmusicTrue, del_mpvoiceTrue默认就是开的。⑥ 关键词联想get_sugg给搜索框找灵感用的输入一个词返回一串相关联想sugg api.get_sugg(高考) print(sugg) # [高考e通, 高考专业培训, 高考地理俱乐部, ...]30 行代码做一个公众号监控小助手方法都认识了现在把它们串起来写一个真正能跑的迷你项目定时抓取一批公众号的最近推送落盘成 JSON方便后续做分析或归档。# -*- coding: utf-8 -*- 公众号监控小助手定时抓取指定公众号的最近推送存成 JSON import json import time from datetime import datetime import wechatsogou WATCH_LIST [南航青年志愿者, 南京航空航天大学] # 换成你想盯的公众号 api wechatsogou.WechatSogouAPI(captcha_break_time3, timeout15) def fetch_and_save(name): data api.get_gzh_article_by_history(name) if not data: print(没有抓到 {} 的数据可能被风控拦了稍后再试.format(name)) return gzh, articles data[gzh], data[article] print({} ({}): {} 篇.format(gzh[wechat_name], gzh[wechat_id], len(articles))) payload { grab_time: datetime.now().strftime(%Y-%m-%d %H:%M:%S), gzh: gzh, articles: articles, } filename {}.json.format(gzh[wechat_id] or unknown) with open(filename, w, encodingutf-8) as f: json.dump(payload, f, ensure_asciiFalse, indent2) print(已保存到, filename) if __name__ __main__: for name in WATCH_LIST: fetch_and_save(name) time.sleep(3) # 请求间隔做个有礼貌的爬虫三个要点值得注意if not data搜不到公众号时返回空字典先判空再取值避免崩溃。ensure_asciiFalse中文原样写入 JSON文件可读。time.sleep(3)批次之间留出间隔别把接口打得太急。想定时跑直接塞进 crontab 或者配个schedule就行项目骨架已经齐了。排掉 5 个高频坑少走半天弯路Q1链接已过期 / 拿不到原始文章 URL搜狗给的文章链接是临时签名链接有有效期。对策是拿到链接后立刻调get_article_content把正文存下来别等到分析时再抓。Q2为什么一个公众号只能拿到 10 篇文章这是搜狗接口的硬限制网页端只展示最近 10 条群发。想积累更多历史数据就得定期采集、增量归档这也是上面监控小助手存在的意义。Q3老是触发验证码怎么办库内置了验证码处理逻辑captcha_break_time控制重试次数。如果频繁弹码多半是请求太密集——降低频率、换代理、换个 User-Agent 都是有效手段。const.py里内置了 30 多个 UA初始化时自动随机选一个。Q4支持 Python 2 还是 3都支持Python 2.7 和 Python 3.5 均可。老项目也能直接引用。Q5抛WechatSogouRequestsException是什么情况这是请求层异常通常是网络不通、代理失效或请求被限流。先检查代理可用性再检查频率。3 个进阶配置让采集更稳更快不需要解析跳转 URL 就关掉它。search_gzh和search_article都有decode_url参数默认True会额外请求解析真实链接。只做关键词趋势分析、不点进原文的话设成decode_urlFalse速度快一截。自定义验证码识别。默认是人工识别弹出图片你自己输想全自动可以传入identify_image_callback一个「输入验证码图片二进制、输出识别文字」的函数接第三方打码平台或 OCR 都行更复杂的场景还能用unlock_callback接管整个解锁流程。请求频率做随机化。固定间隔容易被规律识别改成随机更好import random import time time.sleep(random.uniform(2, 5))从跑通到跑稳你的下一步到这儿你已经有了一条完整的采集链路装库 → 初始化 → 搜公众号 → 搜文章 → 抓历史 → 存正文 → 落盘归档。想深入研究的核心实现都集中在 wechatsogou/api.py常量定义在 wechatsogou/const.py完整文档和数据结构示例在 README.md版本变更记录看 CHANGELOG.md。我的建议是先把上面的监控小助手跑起来用自己的公众号列表试一遍再根据实际需要加功能——比如把 JSON 换成 SQLite、给抓到的正文做全文检索或者接个定时任务做长期归档。最后说句实在话WechatSogou 面向的是搜狗微信搜索的公开页面使用时要遵守平台规则控制请求频率别对服务器造成压力抓到的数据也请合理使用。工具本身只是把重复劳动自动化怎么用、用在哪咱们心里要有数。现在就去装个库跑通第一行get_gzh_info吧——你的公众号数据采集之旅从这一行代码开始。【免费下载链接】WechatSogou基于搜狗微信搜索的微信公众号爬虫接口项目地址: https://gitcode.com/gh_mirrors/we/WechatSogou创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表