用Python实现微信群发,以及其他好玩的操作(一)

Python kingmo888 9410℃ 0评论

本文关键字:Python、微信、微信群发,微信群发带对方名字。


缘起,为何要群发?

微信现在已经是我们生活中不可缺少的东西,像博主这样从用微信起,聊天记录就保存至今乃至微信的文档大小超过了15G的人(好像也没什么用。。)。。。。编不下去了。

反正博主的微信大几千号人,各种各样、各类组别的人都有,有时候想针对某一类的好友发消息,咋办?这时候定向发信息就很关键了。

因为微信虽然本身有群发功能,一是一次上限时200人,二是群发的消息并不显示在单个的聊天记录中,时间久了没有上下文会略有懵逼。

微信群发节日问候

到了节日了,是不是该跟亲朋好友、领导、下属发一下节日问候呢?那么多人,怎么发?当然是群发。可是群发一般会被人看出来,这种情况下反而有可能留下不好的印象,怎么办呢?当然是自定义群发喽!一次分组,简直一劳永逸啊!

或者,你可能会问:

微信如何群发消息?微信一千多人怎么群发?微信群发怎么发?微信群发破200限制方法?

本文以相当白话的形式,从0讲起~

ItChat

要实现Python管理微信或者微信机器人,最大单身社区里有很多可用的插件,这里我们主推一个借助微信网页版接口来实现的一个插件:ItChat.

我们知道伟大的python在不久的将来即将变成一种语言(调侃脸,别误会,以前真的是两种)。

不过itchat目前依旧是同时支持python3.x和python2.7的,所以无需为当前你能否使用而担心。

1、官方描述

A complete and graceful API for Wechat. 微信个人号接口、微信机器人及命令行微信,三十行即可自定义个人号机器人。

itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。

使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

当然,该api的使用远不止一个机器人,更多的功能等着你来发现,比如这些

该接口与公众号接口itchatmp共享类似的操作方式,学习一次掌握两个工具。

如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。

 2、如何安装

pip install itchat

如何进行微信群发

因为本文的目的是群发,并不想要把微信变成一个机器人,所以用不到任何自动回复啊什么的功能,仅需要函数式执行就好了。

1、微信登录

 

import itchat
import pandas as pd
# 登录,执行本函数,itchat自动把二维码下载到本地并打开,手机微信扫描即可。
itchat.auto_login()

itchat.auto_login()
Getting uuid of QR code.
Downloading QR code.
Please scan the QR code to log in.
Please press confirm on your phone.
Loading the contact, this may take a little while.
Login successfully as 李增海

2、获取好友列表并手动维护

friends = itchat.get_friends()

len(friends)
Out[4]: 1357

可以看到,这个微信号有1300多个好友。其中列表第一个是自己。我们可以打印一下(下面的一些自己微信资料的信息,我以###隐藏了。)。

<User: {‘OwnerUin’: 0, ‘IsOwner’: 0, ‘NickName’: ‘#####’, ‘RemarkPYQuanPin’: ”, ‘AppAccountFlag’: 0, ‘UniFriend’: 0, ‘Alias’: ”, ‘PYInitial’: ‘###’, ‘UserName’: ‘@896831f9d952406af437c9f18f51236b’, ‘Signature’: ‘#####’, ‘HeadImgFlag’: 1, ‘EncryChatRoomId’: ”, ‘RemarkName’: ”, ‘AttrStatus’: 84093, ‘VerifyFlag’: 0, ‘WebWxPluginSwitch’: 0, ‘ContactFlag’: 7, ‘StarFriend’: 0, ‘Statues’: 0, ‘ChatRoomId’: 0, ‘PYQuanPin’: ‘####’, ‘KeyWord’: ‘xia’, ‘Sex’: 1, ‘SnsFlag’: 177, ‘MemberList’: <ContactList: []>, ‘Uin’: 39455145, ‘MemberCount’: 0, ‘RemarkPYInitial’: ”, ‘HeadImgUrl’: ‘/cgi-bin/mmwebwx-bin/webwxgeticon?seq=657750050&username=@##&skey=##’, ‘HideInputBarFlag’: 0, ‘DisplayName’: ”, ‘City’: ‘###’, ‘Province’: ‘###’}>

 

解释一下其中的字段,

1、UserName:每个好友的ID唯一值(新版微信无法获取到具体微信号,只能用这个,而且每次登陆会变化哦)。

2、RemarkName:这是你为好友加的备注。这个地方需要强调一下,我们为一个人增加了备注后一般是不会修改的(除了你的男女朋友),由于每次登陆UserName都会变化,所以建议维护一个备注列表作为自己微信好友的,然后增加分组项,以及二次备注项。这样登陆后就可以通过读取存量维护的信息来做对应了。强烈建议为重要的人增加固定的备注。当然,如果是泛目标式的群发,就无所谓了!!!!!

接下来,我们获取所有好友的用户名及备注。

myfriends = {x['UserName']:{'wechatname':x['NickName'],'昵称':x['RemarkName']} for x in friends if x['UserName'] != friends[0]['UserName']}
myfriends = pd.DataFrame(myfriends).T
myfriends.to_excel('名单.xlsx')

我们看一下这个DF的构成,分别是微信名和昵称(叫习惯了,应该叫备注),打码的地方就是有备注的。我这里假设没有备注的必然是我们不会群发的(只依赖微信名字的话,对方改了微信名就无法对应喽

我们对保存下来的文件进行二次编辑,灰色区域是新增的两列。其中,[mark]列主要用于群发时指定特殊称谓,[mygroup]列则用于区分要发送哪些组别。一次维护终身受益啊~后面就是做增量就可以了。如下图:

发送信息测试

在开始群发之前,我们为自己的文件传输助手发送一下验证效果,

我们分别按照日常使用习惯发送文字、文件、图片。

 

这是发送文字。filehelper就是文件传输助手默认的名称。

itchat.send('文字测试:\n你好,世界。', toUserName='filehelper')

返回值:

<ItchatReturnValue: {‘BaseResponse’: {‘Ret’: 0, ‘ErrMsg’: ‘请求成功’, ‘RawMsg’: ‘请求成功’}, ‘MsgID’: ‘7243538804132287132’, ‘LocalID’: ‘15228536463622’}>

这是发送文件(以发图片为例,以便于跟下面的发图片对比效果)。

itchat.send_file('shehuiren.jpg', toUserName='filehelper')

返回值:

<ItchatReturnValue: {‘BaseResponse’: {‘Ret’: 0, ‘ErrMsg’: ‘请求成功’, ‘RawMsg’: ‘请求成功’}, ‘MsgID’: ‘8827405974860233412’, ‘LocalID’: ‘15228536731911’}>

这是发送图片:

itchat.send_image('shehuiren.jpg', toUserName='filehelper')

返回值:

<ItchatReturnValue: {‘BaseResponse’: {‘Ret’: 0, ‘ErrMsg’: ‘请求成功’, ‘RawMsg’: ‘请求成功’}, ‘MsgID’: ‘3905053978607490768’, ‘LocalID’: ‘15228536985220’}>

都发送成功了,我们看看手机微信上的效果:

 

大家会注意到,虽然文件、图片都是同一张图片,但是发送文件的话,是不会显示滴。而以图片方式发送,就会跟平时一样。

 

开始微信群发(祝福):

以后补上 – -!

转载请注明:Python量化投资 » 用Python实现微信群发,以及其他好玩的操作(一)

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(3)个小伙伴在吐槽
  1. 啥时候补啊? 呜呜
    shan2018-09-24 22:25 回复
  2. 大侠,补全了吧
    pros2018-09-26 09:09 回复
  3. 求求你补全好吗?大哥
    牧羊少年2018-12-11 15:06 回复