前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动获取群员名称并用群员名称生成词云图,生成QQ好友列表昵称词云图

自动获取群员名称并用群员名称生成词云图,生成QQ好友列表昵称词云图

作者头像
SingYi
发布2022-07-14 15:30:46
8740
发布2022-07-14 15:30:46
举报
文章被收录于专栏:Lan小站Lan小站

利用昨天的QQ群获取的bkn值来获取指定QQ群的群员昵称,然后生成词云图,也可以根据自己的好友列表的昵称生成词云图。

$$I4YGX$AD@`_PMT0HE[ND5.jpg
$$I4YGX$AD@`_PMT0HE[ND5.jpg

这个就直接上代码了:

代码语言:javascript
复制
import re

import requests
from matplotlib import pyplot as plt
from wordcloud import WordCloud


# 根据skey获取bkn值
def get_bkn(skey):
    e = skey
    t = 5381
    n = 0
    o = len(e)
    # www.lanol.cn By:Lan
    while n < o:
        t += (t << 5) + ord(e[n])
        n += 1
    return t & 2147483647


# 获取好友列表昵称
def getfriendlist(bkn):
    url = 'https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list'
    data = {
        'bkn': bkn,
    }
    html = requests.post(url=url, headers=headers, data=data).json()
    result = html['result']
    ids = []
    names = []
    for i in result:
        ids.append(i)
    for i in range(1, len(ids)):
        a = result[str(ids[i])]
        mems = a['mems']
        for j in mems:
            names.append(j['name'])
    return str(names)


# 获取群友名称
def getgrouplist(bkn, groupid):
    url = 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'
    nicks = []
    data = {
        'gc': groupid,
        'st': '0',
        'end': '20',
        'sort': '0',
        'bkn': bkn,
    }
    html = requests.post(url=url, headers=headers, data=data).json()
    nums = html['count']
    for i in range(0, nums, 40):
        data = {
            'gc': groupid,
            'st': i,
            'end': i + 40,
            'sort': '0',
            'bkn': bkn,
        }
        html = requests.post(url=url, headers=headers, data=data).json()
        mems = html['mems']  # From: www.lanol.cn Author:Lan
        for i in mems:
            nicks.append(i['nick'])
    return str(nicks)


def getresult(words):
    words = str(words).replace('nbsp', '').replace(''', '').replace('u3000', '').replace('u202d', '').replace(
        'amp', '')
    font = 'msyh.ttc'
    # From:www.lanol.cn Author:Lan
    wc = WordCloud(font_path=font,  # 如果是中文必须要添加这个,否则会显示成框框
                   background_color='white',
                   width=1800,
                   height=1080,
                   ).generate(words)
    wc.to_file('a.png')
    plt.imshow(wc)
    plt.axis('off')
    input("结果已生成在代码目录下的a.png,
欢迎来我博客转一转www.lanol.cn
回车后退出")
    plt.show()


if __name__ == '__main__':
    cookie = input("请输入QQ登陆的Cookie值:")
    headers = {
        'cookie': cookie
    }
    bkn = get_bkn(re.findall('; skey=(.*?);', cookie)[0])
    a = input('1,生成好友列表词云图
2,生成群友昵称词云图
>>>')
    if a == '1':
        getresult(getfriendlist(bkn))
    elif a == '2':
        groupid = input("请输入群号:")
        getresult(getgrouplist(bkn, groupid))
    else:
        input("当前功能不存在")

这个一些细节部分根据自己需要然后优化修改一下就行了。

生成的结果图片在软件目录的a.png(自己可以获取群名称,我就懒得改了)

cookie获取方法下次再水一篇帖子。

使用教程:

因为刚刚有人评论不会使用,所以就来一个使用教程吧。

首先呢,你需要有一个python环境,然后需要安装wordcloud模块,request模块以及matplotlib模块

然后再新建一个py文件,将上面的代码全部复制到py文件中,然后运行即可。

Cookie获取方法:

进入这个网站:https://qun.qq.com/member.html

登陆之后,刷新,点击F12,点击XHR,再点击这里面的随便一条记录

image.png
image.png

找到Cookie,然后将后面的内容全部复制,如图我的这个就是pgv_pvi开始一直复制到2034也就是结尾,这个就是Cookie值

image.png
image.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云图数据可视化
腾讯云图数据可视化(Tencent Cloud Visualization) 是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示大量数据,低门槛快速打造出专业大屏数据展示。精心预设多种行业模板,极致展示数据魅力。采用拖拽式自由布局,全图形化编辑,快速可视化制作。腾讯云图数据可视化支持多种数据来源配置,支持数据实时同步更新,同时基于 Web 页面渲染,可灵活投屏多种屏幕终端。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档