用Python爬了一下我的微信好友崎脉,我開始懷疑人生了···

最近留意到Python語言中有一個非常好玩的庫:itchat,基于web 微信的開放api做成的集成庫图甜,它:

是一個開源的微信個人號接口碍粥,使用python調(diào)用微信從未如此簡單。使用不到三十行的代碼黑毅,你就可以完成一個能夠處理所有信息的微信機器人即纲。當(dāng)然,該api的使用遠不止一個機器人辫秧,更多的功能等著你來發(fā)現(xiàn)幽钢,比如實現(xiàn)微信自動回復(fù),個人微信社交網(wǎng)絡(luò)屬性的數(shù)據(jù)分析。該接口與公眾號接口itchatmp共享類似的操作方式搀继,學(xué)習(xí)一次掌握兩個工具。

目前此接口開源于GitHub笆呆,傳送門在此衷戈。

本文簡單的介紹了基于itchat,運行一個簡單的爬蟲程序,來對我個人的朋友圈進行地毯式偷窺衬衬,并試圖從我的朋友圈中挖出幾個變態(tài)买猖。

環(huán)境

本實驗基于Python3.5,IDE工具PyCharm滋尉,并依賴以下庫:

  • itchat玉控,一套開源的微信號接口;
  • jieba狮惜, 分詞工具高诺,用于將抓取到的個人簽名分詞,方便做高頻詞統(tǒng)計碾篡;
  • wordcloud虱而,詞云工具,可以將高頻詞做成詞云圖形开泽;
  • numpy牡拇,數(shù)據(jù)圖表快速生成工具

以上庫均可以通過pip方式快速安裝,如:

pip install itchat

代碼

首先先把核心代碼放上來:

#導(dǎo)入itchat包
import itchat

#獲取個人微信號好友信息
if __name__=="__main__":
    #登錄個人微信穆律,掃碼登錄
    itchat.login()
    #爬取自己好友相關(guān)信息
    friends=itchat.get_friends(update=False)[0:]
    #設(shè)置需要爬取的信息字段
    result=[('RemarkName','備注'),('NickName','微信昵稱'),('Sex','性別'),('City','城市'),('Province','省份'),('ContactFlag','聯(lián)系標(biāo)識'),('UserName','用戶名'),('SnsFlag','渠道標(biāo)識'),('Signature','個性簽名')]
    for user in friends:
        with open('myFriends.txt','a',encoding='utf8') as fh:
            fh.write("-----------------------\n")
        for r in result:
            with open('myFriends.txt','a',encoding='utf8') as fh:
                fh.write(r[1]+":"+str(user.get(r[0]))+"\n")
    print("完成")

以上是本次實驗的核心模塊惠呼,其作用是把個人微信號中的所有好友的昵稱、備注众旗、個性簽名罢杉、性別、城市等等抓取下來贡歧,并存成txt文件滩租。

在程序運行過程中,會彈出一個二維碼利朵,需要掃碼登錄你的微信號律想,然后就會開始爬去這個號的朋友圈;

在此基礎(chǔ)上我們可以對這些數(shù)據(jù)動刀子了:

import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)
# wordcloud詞云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image
d= os.path.dirname(__file__)
alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg")))
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=alice_coloring,max_font_size=40, random_state=42,font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
# 保存圖片 并發(fā)送到手機
my_wordcloud.to_file(os.path.join(d, "wechat_cloud.png"))
itchat.send_image("wechat_cloud.png", 'filehelper')

出來的效果圖如下:


嗯绍弟。技即。≌燎玻看到我的微信好友都這么正能量我就放心了····

其實基于這個接口我們可以統(tǒng)計到更多的數(shù)據(jù)而叼,比如統(tǒng)計一下我微信里面的男女比例:

import itchat
itchat.login()
friends = itchat.get_friends(update=True)[0:]
# 初始化計數(shù)器,有男有女
male = female = other = 0
for i in friends[1:]:
    sex = i["Sex"]
    if sex == 1:
        male += 1
    elif sex == 2:
        female += 1
    else:
        other += 1
        total = len(friends[1:])

print (u"男:%.2f%%" % (float(male) / total * 100))
print (u"女:%.2f%%" % (float(female) / total * 100))
print (u"其他:%.2f%%" % (float(other) / total * 100))

最終打印出來的結(jié)果是:

男:45.23%
女:51.12%
其他:3.65%

我也不知道為什么我的微信里面妹子比較多···

但是我知道里面其實有很多大雕萌妹就對了····

更多玩法

我們可以設(shè)一些自動回復(fù):

import itchat  
 
 
@itchat.msg_register(itchat.content.TEXT)  
def text_reply(msg):  
    message = msg['Text']  
    replay = u'Sir, 對方暫時無法進行交流'  
    if u'在干嘛' in message:  
        replay = u'sorry豹悬,你所聯(lián)系的人正在思考人生不方便回你信息'  
    elif u'生氣' in message:  
        replay = u'忙完給你買好吃的吶(づ ̄3 ̄)づ'  
    elif u'好吧' in message:  
        replay = u'乖~'  
    return replay  
  #以上是一些例子葵陵,可以依樣多弄幾個判斷條件來實現(xiàn)更多很黃很暴力的聊天內(nèi)容
  
itchat.auto_login()  
itchat.run() 

還可以看看我的好友都來自哪里:

#這里省略了掃碼登錄和將抓取到的數(shù)據(jù)存到本地文件的代碼,如果忘記了瞻佛,
可以查看上方代碼示例

Province = df_friends.Province
Province_count = Province.value_counts()
Province_count = Province_count[Province_count.index!=''] 
#有一些好友地理信息為空脱篙,過濾掉這一部分人。

統(tǒng)計結(jié)果完成后,我發(fā)現(xiàn)我的好友大多來自廣東(廢話绊困,我是廣東人)文搂,上海和北京(我是用工作微信號做測試的,估計這部分好友都是客戶爸爸2333)

然后來看看秤朗,我那些來自廣東的好友們煤蹭,都是哪個城市比較多:

City = df_friends.City #[(df_friends.Province=='廣東')]
City_count = City.value_counts()
pinrt '主要來自這些城市:%s(%d)、%s(%d)川梅、%s(%d)疯兼、%s(%d)、%s(%d)和%s(%d)贫途。'[(City_count[0],City_count.index[1],City_count[1],City_count.index[2],City_count[2],City_count.index[3],City_count[3],City_count.index[4],City_count[4],City_count.index[5],City_count[5]))']

最終打印出來的結(jié)果顯示吧彪,廣東的好友們最多來自于:

  1. 廣州:工作號加了一大堆廣州的同事,很合理丢早;
  2. 云敢搪恪:老家,很正常怨酝;
  3. 深圳:加了一堆深圳分部的同事傀缩,以及一些大學(xué)的同學(xué)?
  4. 佛山:农猬?赡艰??斤葱?慷垮??
  5. 湛江:·····不想說話

懷疑人生揍堕,懷疑人生····

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末料身,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衩茸,更是在濱河造成了極大的恐慌芹血,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楞慈,死亡現(xiàn)場離奇詭異幔烛,居然都是意外死亡,警方通過查閱死者的電腦和手機囊蓝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門说贝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人慎颗,你說我怎么就攤上這事。” “怎么了俯萎?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵傲宜,是天一觀的道長。 經(jīng)常有香客問我夫啊,道長函卒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任撇眯,我火速辦了婚禮报嵌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熊榛。我一直安慰自己锚国,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布玄坦。 她就那樣靜靜地躺著血筑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪煎楣。 梳的紋絲不亂的頭發(fā)上豺总,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機與錄音择懂,去河邊找鬼喻喳。 笑死,一個胖子當(dāng)著我的面吹牛困曙,可吹牛的內(nèi)容都是我干的表伦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼赂弓,長吁一口氣:“原來是場噩夢啊……” “哼绑榴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盈魁,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤翔怎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杨耙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赤套,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年珊膜,在試婚紗的時候發(fā)現(xiàn)自己被綠了容握。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡车柠,死狀恐怖剔氏,靈堂內(nèi)的尸體忽然破棺而出塑猖,到底是詐尸還是另有隱情,我是刑警寧澤谈跛,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布羊苟,位于F島的核電站,受9級特大地震影響感憾,放射性物質(zhì)發(fā)生泄漏蜡励。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一阻桅、第九天 我趴在偏房一處隱蔽的房頂上張望凉倚。 院中可真熱鬧,春花似錦嫂沉、人聲如沸稽寒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓦胎。三九已至,卻和暖如春尤揣,著一層夾襖步出監(jiān)牢的瞬間搔啊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工北戏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留负芋,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓嗜愈,卻偏偏與公主長得像旧蛾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蠕嫁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容