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