用itchat导入微信好友信息并保存(详细)简单易懂

前言

之前在blink发了一条说说(可以去我主页看),后来想想虽然是一个small white🤣,但已经学python有二十几天了,不写点什么出来又好像缺点什么…

其他的也不多说了,不管有没有人看,这都是我的第一篇博文。我永远不会去删除它,我想知道等到多年以后,看到这篇博文会是怎么样的一种感觉。🤪

正文

这篇文章适合会一点python基本语法的小白看,我就默认你们是了哈。🤣

我们要实现的目的是把微信好友info导入到Excel中,其中要用到两个第三方库itchat和xlwt
首先,安装:

pip install itchat
pip install xlwt

win+R ,输入cmd运行,分别输入上面代码等待安装。(我用的是Windows系统,其他系统的,可自行摆渡哦😬

itcha用来调用微信网页版API,xlwt用来对Excel进行操作。嗯没错,就是微信网页版,所以我们手机登陆微信也不会被影响的,安啦。😆下面就按这两个步骤来进行操作

第一步:获取好友信息并处理

import itchat,xlwt      #调用第三方库


def login_call():       #用来让我们知道登陆成功
    print('成功登陆')

itchat.auto_login(hotReload=True,loginCallback=login_call) #登陆微信
friend_data=itchat.get_friends(update=True)     #获取微信好友信息,参数为更新,可不写
#print(friend_data)  #可以把注释符号去掉看一下输出

'''总体来说就是这种  [{***},******] 列表里包含着很多个字典
每个好友就对应一个字典,每个字典用js格式存着各种信息'''
#'Sex','NickName','City','UserName','Signature'这是我想要的,你们也可以自己去字典找你们想用的

friend = []     #新建一个空列表
for i in range(len(friend_data)):   #循环*次,*为字典个数,也就是你好友的数量
    sex = friend_data[i].get('Sex')     #get到性别
    nickname = friend_data[i].get('NickName')   #get到暱称
    city = friend_data[i].get('City')    #get到次城市
    signature = friend_data[i].get('Signature')     #get到个性签名
    username = friend_data[i].get('UserName')   
    afdata = [sex,nickname,city,signature,username]    #每次get到的都是一个好友的信息,把它们装进列表
    friend.append(afdata)   #把好友的列表信息装进上面建好的空列表
'''经过上面的for循环就把每个好友的信息装进friend中
大概是这个样子的  [[***],******]   '''

这个应该是你们见过的注释最多的代码了吧,希望你们不要觉得我啰嗦哈哈哈😙

还要啰嗦解释一下,登陆微信auto_login的参数可以不用写,hotReload是用来保持登陆状态的(这样你就不用每运行一次代码就扫一次QR😅,不过也就维持几次,时间长了还是要再扫的),loginCallback是你登陆成功后就会返回运行的函数,函数要自己定义好
在这里描述
这是上面代码运行的结果,红色字体是auto_login运行的指示,不用慌,不是代码错误😈。中途会弹出一个二维码的图片,需要你扫码登陆。

还有那个UserName,是一个很长的字符串’@*********’。我抓取这个信息是因为itchat用来发content给好友需要的参数toUserName要用到UserName💩

第二步:把处理好的列表数据导入Excel保存

workbook = xlwt.Workbook(encoding='utf-8')  # 新建一个表格
worksheet = workbook.add_sheet('好友名单')  # 给表格新建一个名为 好友名单 的工作簿
al = xlwt.Alignment()   #对齐设置
al.horz = 0x02      #水平方向对齐
al.vert = 0x01      #垂直方向对齐
style = xlwt.XFStyle()  # 创建一个样式对象,初始化样式
style.alignment = al    #添加对齐设置
title = ['Sex','NickName','City','UserName','Signature']    #标题
for t in range(len(title)):      #循环5次,也就是标题个数  
    worksheet.write(0,t,title[t],style)     #写入,参数分别为(第0行,第t列,内容,样式)
for i in range(len(friend)):    #循环n次,n个好友,一个好友写入一行
    for j in range(len(friend[i])):     #循环5次,之前代码中afdata的个数
        worksheet.write(i+1,j,friend[i][j],style)   #写入,第一行为标题,所以要i+1
workbook.save('微信好友一览表.xls')      #保存表格,参数为文件名,记得加上格式.xls哦
#到这里我们的任务就完成了------------------开心-------------------------
print('总共有好友%d个'%len(friend))    #用来打印好友个数(无关紧要)

代码中用带了for的嵌套,可能有一些小白要想一会儿才明白,不过我注释得那么仔细,还是很容易理解的😶蜜汁自信

其中对样式的设置我本来想多设置一些(例如列宽,字体),不过感觉没有必要,直接保存后去打开文件修改岂不是更容易😵,(所以上面那个样式的设置可以不用写,当然那个write的第4个参数也就不用写了)

总代码(无注释)

import itchat,xlwt      


def login_call():      
    print('成功登陆')

itchat.auto_login(hotReload=True,loginCallback=login_call) 
friend_data=itchat.get_friends(update=True)   
friend = []  
for i in range(len(friend_data)):  
    sex = friend_data[i].get('Sex')   
    nickname = friend_data[i].get('NickName')  
    city = friend_data[i].get('City')  
    signature = friend_data[i].get('Signature')  
    username = friend_data[i].get('UserName')
    afdata = [sex,nickname,city,signature,username]   
    friend.append(afdata)   
workbook = xlwt.Workbook(encoding='utf-8')  
worksheet = workbook.add_sheet('好友名单') 
al = xlwt.Alignment()   
al.horz = 0x02    
al.vert = 0x01    
style = xlwt.XFStyle() 
style.alignment = al   
title = ['Sex','NickName','City','UserName','Signature']   
for t in range(len(title)):    
    worksheet.write(0,t,title[t],style)    
for i in range(len(friend)):   
    for j in range(len(friend[i])):   
        worksheet.write(i+1,j,friend[i][j],style)  
workbook.save('微信好友一览表.xls')     
print('总共有好友%d个'%len(friend))   

嗯 ,总共也就29行代码 — 接下来再发个成果图

成果图

在这里插入图片描述

保护别人隐私,见谅🙃
这是我直接打开后粗劣调了列宽后的截图 ,性别一行’1’为男性,'2’为女性,'0’为**😱

后记

写了挺久的也挺认真,希望以后看到不会打自己一巴掌吧🤓

这是我的第一篇博文,相信也不会是最后一篇。以后我也许会写到itchat的其他用法(比如自动回复,可以回复好友给你的信息回去,就是好友发给你什么,你的程序就会自动回复这段内容回去…气人😒,或者接入图灵API,让好友跟机器人对话🙄),或者其他的好玩的应该会写出来跟大家分享

好了,我平时都是最怕写作文的,没想到这次竟然会主动写起博文,也许是受到我们CSDN社区各位大牛的影响吧哈哈,最后希望本文能够让你们有一点收获,有什么错误啥的也可以私信给我哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章