基於微信能夠作不少有意思的練手項目,看了這張速查表你就會發現,能夠作的事情超過你的想象。微信
有一次我想要統計微信羣裏哪些同窗在北京,但發現直接問是很可貴到準確結果的……app
這時候不如運用 wxpy 這個庫抓取全部羣友的地區信息,很快就能夠獲得想要的結果,甚至還精確到了區。spa
下面來分享一下這個微信羣友統計器的實現思路,你能夠基於它去拓展更多實用功能。code
解決複雜問題最好的辦法就是把問題簡單化,拆解成若干個小問題,而後逐個擊破。問題的拆解思路以下:對象
▍1. 如何經過 wxpy 庫找到指定微信羣?索引
使用 bot.groups() 方法找出最近聊天的微信羣ci
使用 wxpy 提供的 bot.groups().search('羣名')[0] 方法找到指定微信羣文檔
▍2. 如何獲取到指定微信羣的所有羣成員?get
對微信羣對象使用 .members 得到微信羣的所有羣成員源碼
▍3. 如何獲取到羣成員的省份跟城市的信息?
對獲取到的微信羣的所有羣成員,使用 for 循環一個一個的用 .province 和 .city 獲取省份跟城市信息
而後進行統計,便可得到各地區的人數。
只須要修改倒數第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 文檔中的全部功能,能夠對照着方便索引。