基于搜狗微信搜索的微信公众号爬虫
0 前言
最近想搞一点秘密的小东西,然后就发现了一个非常有用的库 wechatsogou,听个名字你就大概能猜出是什么来的了,基于搜狗微信搜索的微信公众号爬虫接口,有了这个就可以玩起来了。
1 环境说明
Win10 系统下 Python3,编译器是 Pycharm,需要安装 wechatsogou 这个库
这里只介绍 Pycharm 安装第三方包的方法。
2 相关代码
2.1 搜索公众号信息
import wechatsogou # 导入库
ws_api = wechatsogou.WechatSogouAPI() # 初始化
print(ws_api.search_gzh('萧北月')) # 搜索公众号
代码运行后会显示一个验证码,自己人工识别一下,再把验证码输入到please input code:
那就好(6个字符的是搜狗的验证码,4个字符的是微信的验证码)
运行结果:
[{'open_id': 'oIWsFt_dPYnbltzh3qPwi3J7XqJQ',
'profile_url': 'http://mp.weixin.qq.com/profile?src=3×tamp=1523616541&ver=1&signature=9yFqnyyzkqK3sQAV6KIW9OTb4BXx0lLrKzpdUHK6A5XaTmAtB8TeoKTM7vdE89u5adoYWw2OcQleRlMtOF7rw==',
'headimage': 'http://img01.sogoucdn.com/app/a/100520090/oIWsFt_dPYnbltzh3qPwi3J7XqJQ',
'wechat_name': '萧北月', 'wechat_id': 'beiyue_lbj',
'qrcode': 'http://mp.weixin.qq.com/rr?src=3×tamp=1523616541&ver=1&signature=WVOGii0G4xYwtQWrMW5Ha2ufILN0pB992K5zAIhSiWXOh8Nd0HOoliGVjm5eIla0sPZ5YW7QvzMAwrVsB2UjPnNGFk4UwDB6kDGNbP4k=',
'introduction': '分享我的所思所想,也分享实用又有趣的东西',
'authentication': '\n', 'post_perm': -1, 'view_perm': -1}]
把 profile_url 是最近10条群发页链接,把后链接复制到浏览器打开,可以看见下面这样的东西。
是的,就是历史消息,仔细一看就能发现只有 10 条历史消息。链接是临时链接,也就是说,这个链接会失效,具体时间我没仔细测试一下。
headimage 就是我公众号的头像;wechat_id 是我公众号的微信 id;qrcode 是公众号二维码的链接;introduction 是公众号简介,或者说是功能介绍;authentication 是认证,个人认证就是这样;post_perm 是最近一月群发数;view_perm 是最近一月阅读量。
‘introduction’: ‘党委中心组时政、理论学习、管理、交流平台’, ‘authentication’: ‘中国共产党四川省委员会讲师团’, ‘post_perm’: 121, ‘view_perm’: 48}
抱歉了,某公众号的运营团队,用你们的数据说说话。
2.2 微信公众号文章
代码如下
import wechatsogou
ws_api = wechatsogou.WechatSogouAPI()
print(ws_api.search_article('萧北月')) # 关键词是萧北月,不是说爬我公众号的文章
运行结果是一大堆的东西,,这里只能爬取一部分的文章
{'article': {'title': '用Python 制作微信好友个性签名词云图',
'url': 'http://mp.weixin.qq.com/s?src=11×tamp=1523618973&ver=814&signature=vBZrfexBBbHDqRnEJyMsdimKvg8fJoyg8ca1iZKYUdw63s6kNtkI1H-0hz0glHvQhGKKYMntSPsm8YbqIrpnC4F3-cKLbjBZxtlFTdLEiP7NlQLpX8ZntMWOpXoWJ&new=1',
'imgs': ['http://img01.sogoucdn.com/net/a/04/link?appid=100520033&url=https://mmbiz.qlogo.cn/mmbiz_jpg/Wz5hZDg47G3skibMYwMeVYxTl3vSNbdBXAib3FqhUMKtq8VUF5T0Rlib4iaHww8eLc7Xib0XtJrfVxbqPYzFuwKxttQ/0?wx_fmt=jpeg'],
'abstract': '4.相关说明参考链接:http://blog.csdn.net/Lee20093905/article/details/79052795萧北月beiyue_lbj',
'time': 1521553773},
'gzh': {'profile_url': 'http://mp.weixin.qq.com/profile?src=3×tamp=1523618973&ver=1&signature=9yFqnyyzkqK3sQAV6KIW9OTb4BXx0lLrKzpdUHK6A5XaTmAtB8TeoKTM7vdE89uWk1krt44mHni8OuheHFg==',
'headimage': 'http://wx.qlogo.cn/mmhead/Q3auHgzwzM5RZypia1GRRNpCEFqFdc50eDT4ADqDbbtibAm3embortYA/0',
'wechat_name': '萧北月', 'isv': 0}}
isv :是否加 v,只能是 1 或 0。1 就是加 v,0 就是没有。
2.3 首页热门页
from pprint import pprint
from wechatsogou import WechatSogouAPI, WechatSogouConst
ws_api = WechatSogouAPI()
gzh_articles = ws_api.get_gzh_article_by_hot(WechatSogouConst.hot_index.food)
for i in gzh_articles:
pprint(i)
运行结果:
'main_img': 'http://img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F0oVicD6cYHuGN2NpoWgNed6AzUsP0kukbx7zy57F8EWoATvhwvNp0e060sGACINVliaQtKZWDFhTQWbIAAV4iaibfA%2F0%3Fwx_fmt%3Djpeg',
'open_id': 'oIWsFt_2q1cK2d6Yvp44XKZ-tnIQ',
'time': 1523616378,
'title': '史上最短下学期,考试接二连三!快被考糊的学生该怎么办?',
'url': 'http://mp.weixin.qq.com/s?src=11×tamp=1523619725&ver=814&signature=pP52bN2UflHFFApeiYSOwi-ytTCETF*jdMKnykZM76QTUDylYKtAQlq1rzyVr2VdiIf7oQQSxbZ9cXc45mmrtmSAbwegWucocQBr9T0WfoSTNxpYPBZ2SZ8diiQOOJUG&new=1'},
'gzh': {'headimage': 'http://img04.sogoucdn.com/app/a/100520090/oIWsFt_2q1cK2d6Yvp44XKZ-tnIQ',
'wechat_name': '中华资源库'}}
2.4 公众号最近文章
import wechatsogou
ws_api = wechatsogou.WechatSogouAPI()
print(ws_api.get_gzh_article_by_history('萧北月')) #这次是真的爬我公众号的文章
这里只能爬最近 10 篇的文章,不过也足够了。
{'gzh': {'wechat_name': '萧北月', 'wechat_id': 'beiyue_lbj', 'introduction': '分享我的所思所想,也分享实用又有趣的东西', 'authentication': '分享我的所思所想,也分享实用又有趣的东西', 'headimage': 'http://wx.qlogo.cn/mmhead/Q3auHgzwzM5RZypia1GRRNpCEFqFdc50eDT4ADqDbbtibAm3embortYA/0'},
'article': [{'send_id': 1000000020, 'datetime': 1523019431, 'type': '49', 'main': 1,
'title': '使用 Python 伪造数据', 'abstract': '真真假假,假假真真', 'fileid': 100000203,
'content_url': 'http://mp.weixin.qq.com/s?timestamp=1523621534&src=3&ver=1&signature=opv39vxOL922oluCYH8yziQFqKCpCpXToynePDglJpOXIBfFy8GHUzmr6g9zZhxcdImimyts8JgLsSWJ0z5TnQpeHkpt9pfSDvtM5e3ak9ZVyEnq356ORsDA8p3-fsF67-TNZcoAi178tyVVauFctqphpsn7igxPcQbponoi4=',
'source_url': 'https://github.com/joke2k/faker', 'cover':
'https://mmbiz.qlogo.cn/mmbiz_jpg/Wz5hZDg47G3LckVXsS41ibb19AoOShI8S4DJOocPHbKpDSN3Btt0KUFoPmacdIpibLUWlxw9Omm9XVeEJsiaWrOCA/0?wx_fmt=jpeg',
'author': '伪君子', 'copyright_stat': 11},
如果没猜错,send_id 就是发的第几篇文章;datetime 我没看透,不知道 10 位时间戳是什么意思; type 是消息类型,网页端最近10条消息页只有49,表示图文消息;main 是群发的第几条消息,1 是第一条;content_url 是文章链接;source_url 是原文链接;copyright_stat 表示是否原创,11是原创。
2.5 关键词联想
import wechatsogou
ws_api = wechatsogou.WechatSogouAPI()
print(ws_api.get_sugg('美女')) # 获取关键字联想词
分别试试美女,谷歌,腾讯,结果还行。
3 相关说明
WechatSogou 的说明文档:https://github.com/Chyroc/WechatSogou