itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。
该api的使用远不止一个机器人,更多的功能等着你来发现,比如这些。
该接口与公众号接口itchatmp共享类似的操作方式,学习一次掌握两个工具。
如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。
【文章背景】最近几天干啥都不来劲,昨晚偶然了解到Python里的itchat包,它已经完成了wechat的个人账号API接口,使爬取个人微信信息更加方便。鉴于自己很早之前就想知道诸如自己微信好友性别比例都来自哪个城市之类的问题,于是乎玩心一起,打算爬一下自己的微信。
在终端安装一下itchat包。pipinstallitchat
安装完成后导入包,再登陆自己的微信。过程中会生产一个登陆二维码,扫码之后即可登陆。登陆成功后,把自己好友的相关信息爬下来。
import itchat
itchat.login()
#爬取自己好友相关信息, 返回一个json文件
friends = itchat.get_friends(update=True)[0:]
有了上面的friends数据,我们就可以来做好友或者朋友圈数据分析啦!
python实现微信接口(itchat)
安装
登录
itchat.auto_login()这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl用于存储登录状态
退出及登录完成后调用的特定的方法
这里主要使用的是灰调函数的方法,登录完成后的方法需要赋值在loginCallback中退出后的方法,需要赋值在exitCallback中.若不设置loginCallback的值,将会自动删除二维码片并清空命令行显示.
import itchat, time
def lc():
print('Finash Login!')
def ec():
print('exit')
itchat.auto_login(loginCallback=lc, exitCallback=ec)
time.sleep()
itchat.logout() #强制退出登录
回复消息
send(msg='TextMessage',toUserName=Non参数:msg:文本消息内容@fil@path_to_file:发送文件@img@path_to_img:发送片@vid@path_to_video:发送视频toUserName:发送对象,如果留空,将发送给自己.返回值TrueorFalse实例代码
# coding-utf-8
import itchat
itchat.auto_login()
itchat.send('Hello World!')
ithcat.send('@fil@%s' % '/tmp/test.text')
ithcat.send('@img@%s' % '/tmp/test.png')
ithcat.send('@vid@%s' % '/tmp/test.mkv')
send_msg(msg='TextMessage',toUserName=Non,其中的的msg是要发送的文本,toUserName是发送对象,如果留空,将发送给自己,返回值为True或者False实例代码
send_file(fileDir,toUserName=NonfileDir是文件路径,当文件不存在时,将打印无此文件的提醒,返回值为True或者False实例代码
send_image(fileDir,toUserName=Non参数同上实例代码
send_video(fileDir,toUserName=Non参数同上实例代码
注册消息方法
itchat将根据接受到的消息类型寻找对应的已注册的方法.如果一个消息类型没有对应的注册方法,该消息将会被舍弃.在运行过程中也可以动态注册方法,注册方式与结果不变.
注册方法
不带具体对象注册,将注册为普通消息的回复方法.
import itchat
from itchat.content import *
@itchat.msg_register(TEXT) #这里的TEXT表示如果有人发送文本消息,那么就会调用下面的方法
def simple_reply(msg):
#这个是向发送者发送消息
itchat.send_msg('已经收到了文本消息,消息内容为%s'%msg['Text'],toUserName=msg['FromUserName'])
return 'T reveived: %s' % msg['Text'] #返回的给对方的消息,msg['Text']表示消息的内容
带对象参数注册,对应消息对象将调用该方法,其中isFriendChat表示好友之间,isGroupChat表示群聊,isMapChat表示公众号
import itchat
from itchat.content import *
@itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True,isMpChat=True)
def text_reply(msg):
msg.user.send('%s : %s' % (mst.type, msg.text))
消息类型向注册方法传入的msg包含微信返回的字典的所有内容.itchat增加Text,Type(也就是参数)键值,方便操作.itcaht.content中包含所有的消息类型参数,如下表
文章为作者独立观点,不代表股票交易接口观点