python實現微信群友統計器

Crossin先生發表於2018-11-12

基於微信可以做很多有意思的練手專案,看了這張速查表你就會發現,可以做的事情超過你的想象。

python實現微信群友統計器

有一次我想要統計微信群裡哪些同學在北京,但發現直接問是很難得到準確結果的……

python實現微信群友統計器


這時候不如運用 wxpy 這個庫抓取所有群友的地區資訊,很快就可以得到想要的結果,甚至還精確到了區。

python實現微信群友統計器

下面來分享一下這個微信群友統計器的實現思路,你可以基於它去擴充更多實用功能。

實現思路

解決複雜問題最好的辦法就是把問題簡單化,拆解成若干個小問題,然後逐個擊破。問題的拆解思路如下:

python實現微信群友統計器


▍1. 如何通過 wxpy 庫找到指定微信群?

使用 bot.groups() 方法找出最近聊天的微信群

python實現微信群友統計器

使用 wxpy 提供的 bot.groups().search('群名')[0] 方法找到指定微信群

python實現微信群友統計器


▍2. 如何獲取到指定微信群的全部群成員?

對微信群物件使用 .members 獲得微信群的全部群成員

python實現微信群友統計器
python實現微信群友統計器


▍3. 如何獲取到群成員的省份跟城市的資訊?

對獲取到的微信群的全部群成員,使用 for 迴圈一個一個的用 .province 和 .city 獲取省份跟城市資訊

python實現微信群友統計器
python實現微信群友統計器

然後進行統計,即可獲得各地區的人數。

統計器原始碼

只需要修改倒數第5行,改成你要查詢的微信群,然後就可以使用了。

from wxpy import *

bot = Bot()

def get_members(group_name): print(bot.groups().search(group_name)[0]) group = bot.groups().search(group_name)[0] #使用此方法用來更新群聊成員的詳細資訊 (地區、性別、簽名等) group.update_group(True) #獲取該群聊組的全部成員物件 members = group.members return members

def clean_members(members): #用來存放群聊裡出現的全部的省份跟城市的資訊 member_clean = [] for member in members: #.province跟.city分別獲取群成員物件的省份跟城市 member_info = member.province + member.city #可能有的成員沒有設定自己的地區跟城市,獲取到的member_info可能為空 member_info_clean = member_info.replace(' ', '') if not member_info_clean == '': member_clean.append(member_info_clean) return member_clean

def result(member_clean): member_dict = {} for m in member_clean: #統計某個省份跟地區在member_clean列表裡面的人數 if member_clean.count(m): member_dict[m] = member_clean.count(m) #把member_clean列表裡,向member_dict字典裡新增過的省份地區刪除掉 member_clean = [value for value in member_clean if value != m] return member_dict

複製程式碼

#改成想要統計的群聊名字,很久沒有聊天記錄的群最好先發條訊息 group_n = '實用主義第三期入門訓練營' members = get_members(group_n) member_clean = clean_members(members) member_dict = result(member_clean) print(member_dict) 複製程式碼

速查表下載

這張速查表涵蓋了 wxpy 文件中的所有功能,可以對照著方便索引。

python實現微信群友統計器

python實現微信群友統計器

相關文章