python實現微信羣友統計器

基於微信能夠作不少有意思的練手項目,看了這張速查表你就會發現,能夠作的事情超過你的想象。微信

有一次我想要統計微信羣裏哪些同窗在北京,但發現直接問是很可貴到準確結果的……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 文檔中的全部功能,能夠對照着方便索引。

相關文章
相關標籤/搜索