使用Python訪問微信


itchat是一個開源的微信個人號接口,使用它我們可以很方便的訪問我們個人微信號里的信息。itchatgithub地址如下:

https://github.com/littlecodersh/itchat

 

在通過 pip install itchat安裝此模塊后,我們即可以通過使用python訪問自己微信號下的信息。

 

1. 登陸

首先我們需要登陸我們的微信號

import itchat
itchat.auto_login(hotReload=True)

 

此處的auto_login()執行后,會下載一張二維碼圖片,然后通過手機掃描二維碼圖片后即可登錄個人微信。在指定hotReload=True后,此方法會生成一個本地的itchat.pkl文件,用於保存登錄信息。之后在一定時間內再次登錄時,就不需要再次掃描二維碼。

 

另外一種登錄方式為:

>>>itchat.login()

 

2. 訪問微信好友信息

在成功登陸后,我們可以直接獲取所有微信好友的信息:

friends = itchat.get_friends(update=True)

print(friends)

 

通過觀察打印出的信息,我們可以發現每個好友的信息均存在一個字典里,這個字典里的key主要有:

'UserName', 'City', 'DisplayName', 'Province', 'Signature', 'NickName', 'Sex'…… 等等。

 

接下來,我們可以將一些主要的信息存放在幾個列表里:

# information
NickName = []
Sex = []
Province = []
City = []
Signature = []
for friend in friends:
     NickName.append(friend[
'NickName'])
     Sex.append(friend[
'Sex'])
     Province.append(friend[
'Province'])
     City.append(friend[
'City'])
     Signature.append(friend[
'Signature'])

 

dic = {'NickName':NickName, 'Sex':Sex, 'Province':Province, 'City':City, 'Signature':Signature}

 

然后將它存為DataFrame

from pandas import DataFrame
data = DataFrame(dic)

 

如果你更擅長用excel分析的話,可以將它保存為一個excel文檔保存到本地:

data.to_csv('data.csv', index=True, encoding='utf_8_sig')

 

之后可以直接在excel里查看這些信息,如(隱私被處理):

 

City

NickName

Province

Sex

Signature

   

0

 

N1

 

X

     

1

XXX

N2

XXXX

X

XXXXX

 

2

 

N3

 

X

     

3

XXX

N4

XXX

X

XXXXX

 

4

 

N5

 

X

XXXXX

 

 

3. 分析信息

在獲取了這些信息后,我們可以簡單的查看一下,如:

 

1. 好友里男女比例:

import matplotlib.pyplot as plt
plt.rcParams[
'font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
sexcounts = data['Sex'].value_counts()
sexcounts.plot(
kind='pie', autopct='%1.0f%%', pctdistance=0.5, labeldistance=1.2).get_figure()
plt.show()
 
其中0表示性別未填寫,1表示男性,2表示女性

 

2. 好友里地域分布(其中地域部分未截圖):

procounts = data['Province'].value_counts()
procounts.plot(
kind='bar').get_figure()

 

3. 好友簽名里的常用詞:

首先我們可以將所有簽名合並:

text = ''.join(Signature)

由於會有好友在簽名里使用表情,所以在文本里會有如下標簽

<span class="emoji emoji1f4aa"></span><span class="emoji emoji1f4aa">

 

這里我們用正則將這些標簽去掉:

import re
reg = re.compile(
'<span .*?>(.*?)</span>')
text = reg.sub('', text)

 

然后使用jieba這個模塊對得到的文本進行分詞:

import jieba
wordlist = jieba.cut(text,
cut_all=True)
words =
' '.join(wordlist)

 

最后我們畫出詞雲圖:

coloring = np.array(Image.open('w.jpg'))

my_wordcloud = WordCloud(
background_color='white', max_words=2000, mask=coloring, max_font_size=60, random_state=42, scale=2, font_path='/Library/Fonts/Microsoft/SimHei.ttf').generate(words)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(
color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis(
"off")
plt.show()

 

 

看來大家都是很熱愛生活的哇!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM