最近瀏覽網頁看到了wxpy這個東西,不僅驚喜不已。於是開始動手做一個微信好友性別,省市分佈的程序。我也想要了解一下大家啊~ 遺憾的是之前沒有學過python,那就邊看菜鳥教程邊做吧。我做的一些筆記之後會分享出來。
準備
開發工具:pycharm(py就要專業點,調試非常方便。當然idea和eclipse都可以通過添加插件的方式開發python)
wxpy庫(微信API,是在itchat基礎上開發的)
matplotlib庫(用於圖表繪製,這裏我們做了餅圖和柱狀圖)
相關方法
這裏創建一個機器人用於登錄,該方法執行後,需要掃描彈出的二維碼,進行微信登錄。
bot = Bot(cache_path=True)
這裏使用cache_path參數,可以避免短時間內多次掃碼登錄。建議加上。
friends = bot.friends(update=True)
bot對象下有很多聊天變量,可以在官方文檔查閱,這裏使用的friends使我們需要的好友。
下面我們定義一個方法用於分析我們的好友對象,並把分析結果進行必要處理,並繪製圖像。具體程序如下:
def analy_people(people):
# 獲取性別分佈
statsex = people.stats('sex')
# 獲取省分佈
statprovince = people.stats('province')
# 獲取市分佈
statcity = people.stats('city')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(1)
plt.subplot(311)
plt.title('微信好友性別分佈') # 圖名
dictsex = statsex.get('sex')
x = dictsex.keys()
y = dictsex.values()
# 對性別代碼進行替換
xlst = [''] * 3
xlst[list(x).index(0)] = '其他(好奇怪啊)'
xlst[list(x).index(1)] = '純爺們'
xlst[list(x).index(2)] = '女漢子'
plt.pie(y, labels=xlst, autopct='%1.1f%%', shadow=False, startangle=150)
plt.subplot(312)
plt.title('微信好友省分佈') # 圖名
dictprovince = statprovince.get('province')
x1 = dictprovince.keys()
y1 = dictprovince.values()
x1lst = list(x1)
x1lst[x1lst.index('')] = '未知'
plt.bar(x1lst[0:10], list(y1)[0:10])
plt.subplot(313)
plt.title('微信好友所在市分佈') # 圖名
dictcity = statcity.get('city')
x2 = dictcity.keys()
y2 = dictcity.values()
x2lst = list(x2)
x2lst[x2lst.index('')] = '未知'
plt.bar(x2lst[0:10], list(y2)[0:10])
print("================================")
plt.show()
figure是一個畫布,suplot是畫布中的第幾塊。matplotlib這個東西令我不禁想起了上學時使用matlab的年代,那是我逝去的青春啊~
最後程序中調用這個方法:
analy_people(friends)
ctrl+shift+F10
運行,掃碼登錄,我們的分析結果就呈現出來了 (=^_^=)
最近在搞加微信羣好友的東東(沒有數據量,你在想peach)。但是老是報1205,頻率也調整了,還是有這個問題。不知各位有何見解,歡迎分享啊~
初出茅廬,略微拙劣。多多包涵~