用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社區各位大牛的影響吧哈哈,最後希望本文能夠讓你們有一點收穫,有什麼錯誤啥的也可以私信給我哦~

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