Python获取微信好友地址以及性别并生成可视化图表

2023-11-18

简介

      使用python批量获取微信好友地址,需要使用itchat库,这个库是用的网页版微信的接口进行数据获取的。所以你想测试这个功能必须要你的微信能够登录网页版微信。(之前的itchat-uos模块使用了统信版的接口绕过了腾讯的检测,所有的微信都能正常使用,但是最近这个接口被腾讯封杀了)如果你的微信是在2017年还是2018年?之前注册的,登录微信文件传输助手网页版之后传输一个文件之后再打开微信网页版就能直接登录了。(最近两年注册的新微信可能无法登录网页微信,所以此方法不适用!)

先上效果图

使用的是pyecharts模块生成的饼图。

现在开始代码讲解

1、首先用itchat模块登录微信,然后获取全部好友信息。

i.auto_login(hotReload=True)  // hotReload=True  :短时间内自动登录
friend = i.get_friends(update=True)  //获取好友信息

 2、然后写一个for循环读取好友的所在的省份以及城市信息,并存入一个数组中以便后续操作。

data = []
for we in friend:
    if we['Province'] != "":
        weAddress = we['Province']+we['City']
        data.append(weAddress)

上面的代码块是将所有好友的所在地信息存入一个数组,但是会有重复的数据,所以我们要再写个功能,将重复的地址信息算出来。 将上文的数组输出得到如下示例数据,可以看到有不少重复数据。

['湖南长沙', '湖南岳阳', 'Canberra', '湖南长沙', '浙江台州', '湖南岳阳', '湖南长沙', '湖南岳阳', '湖南长沙', '湖南长沙', '湖南长沙', '江苏苏州', '湖南岳阳', '湖南岳阳', '湖南岳阳', '湖南长沙', '广东深圳', '四川德阳',......](此处省略更多数据)

3、将所在地的重复数据汇总。

myset = set(data)
address01 = []
for item in myset:
    address02 = (item, data.count(item))
    address01.append(address02)

上图的 set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

通过set() 可以将上文中重复的所在地信息进行过滤、筛选,然后通过count方法查询有多少个,再将这些信息编入一个新数组,以便后续的饼图制作。

将数据汇总后会得到如下的示例数据,是由一个一个键值对组成的数据,一个市级地理位置对应一个数字,这个数字就是你微信好友所在地在这个城市的人数。

[('湖南衡阳', 1), ('IncheonIncheon', 1), ('Dublin', 1), ('安徽合肥', 1), ('河南郑州', 1), ('湖北武汉', 1), ('湖南怀化', 3),......](此处省略更多数据)

4、微信好友性别也是这样操作,获取所有用户的性别后进行汇总。

Sexdata = []
for sex in friend:
    if sex['Sex'] == 1:
        s1 = '男'
    elif sex['Sex'] == 2:
        s1 = '女'
    else:
        s1 = '未知'
    Sexdata.append(s1)

myset = set(Sexdata)
Sex01 = []
for item in myset:
    Sex02 = (item, Sexdata.count(item))
    Sex01.append(Sex02)

 5、这两个数据获取完成后,就可以准备制作饼图了。

pie = (
    Pie(init_opts=opts.InitOpts(
        theme=ThemeType.MACARONS,
        width="1200px",
        height="800px", page_title="微信好友所在地以及性别比"))
    .add("微信好友所在地", address01, label_opts=opts.LabelOpts(formatter='{b}:{d}%'), center=["30%", "30%"], radius=[0, 150],)
    .add("微信好友性别比", Sex01, label_opts=opts.LabelOpts(formatter='{b}:{d}%'), center=["80%", "30%"], radius=[50, 150],)
    .set_global_opts(title_opts=opts.TitleOpts(title="微信好友所在地以及性别比"), legend_opts=opts.LegendOpts(type_='scroll', pos_left="20%"))
)

pie.render("wxAddress.html")
theme:设置饼图的风格和样式.
page_title:设置标题.
.add():新建一个饼图,因为我们这里有两组数据所以要弄两个。
    label_opts:将鼠标移入到饼图中,所显示的内容,这里设置的是显示百分比数据
    center:饼图的位置,前面的是相对于左边的,后面是相对于顶部的
    radius:饼图的形状大小,[0, 150] 第一个数字为0表示是实心的,后面的数字控制大小。
pie.render:生成html文件预览

 更改了饼图的形状后,效果如下:

 完整代码下载链接:python获取微信好友所在地以及性别并制作饼图分析表-Python文档类资源-CSDN下载

如果没有积分,私信我给你发送,看到就会回复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python获取微信好友地址以及性别并生成可视化图表 的相关文章

  • 为什么 __instancecheck__ 并不总是根据参数调用?

    有这样的代码 class Meta type def instancecheck self instance print instancecheck return True class A metaclass Meta pass a A i
  • Python串口通信

    我正在开发一个 Arduino 项目 由于内存限制 我将其与 Python 脚本连接起来 在Python方面 我有一个二维矩阵 其中包含各自的x y坐标值 并且在此列表中有26000个坐标对 因此 为了向大家澄清数据结构 pathlist
  • 在云服务器中运行 python 脚本的最简单方法是什么?

    我有一个网络爬行 python 脚本 需要几个小时才能完成 并且无法在我的本地计算机上完整运行 有没有一种方便的方法可以将其部署到简单的 Web 服务器 该脚本基本上将网页下载到文本文件中 如何最好地实现这一点 谢谢 既然你说性能是一个问题
  • 如何在 Python 中使用 Selenium 运行无头 Chrome?

    我正在尝试使用 selenium 进行一些操作 我真的希望我的脚本能够快速运行 我认为使用无头 Chrome 运行我的脚本会使其速度更快 首先 这个假设是否正确 或者我是否使用无头驱动程序运行我的脚本并不重要 我希望无头 Chrome 能够
  • jinja2.exceptions.TemplateNotFound:index.html

    我尝试使用 Flask 打开 index html run py from app import app app run debug True init py from flask import Flask app Flask name f
  • Google PubSub 在阻止和等待消息时没有标准输出

    我正在使用这个问题底部的 Python 代码监听 Google PubSub 消息 它实际上是来自 Google 的异步拉取示例 我运行我的程序并输出到文件 python my script py tee log txt 如果我在接收消息时
  • 使用另一个索引数组正确索引多维 Numpy 数组

    我正在尝试索引多维数组P与另一个数组indices 它指定我想要沿最后一个轴的哪个元素 如下所示 import numpy as np M N 20 10 P np random rand M N 2 9 index into the la
  • Python 中意外的缩进错误[重复]

    这个问题在这里已经有答案了 我有一段简单的代码 我不明白我的错误来自哪里 解析器在第 5 行 if 语句 上用意外的缩进向我咆哮 有人看到这里的问题吗 我不 def gen fibs a b 0 1 while True a b b a b
  • 使用 python 在网络上部署 matlab 应用程序

    您好 我想使用 python 在网络上部署 matlab 应用程序 有没有办法做到这一点 我已按照数学工作网站上的文档将我的应用程序转换为 jar 文件 java 类 有人能指出我前进的正确方向吗 事实上 您的 Matlab 代码打包为 J
  • 在Python中修改大型文本文件最后一行的最有效方法

    我需要更新几个超过 2GB 的文件的最后一行 这些文件由无法读取的文本行组成readlines 目前 它可以通过逐行循环来正常工作 但是 我想知道是否有任何编译库可以更有效地实现这一点 谢谢 目前的方法 myfile open large
  • Pymacs 助手在 30 秒后未启动

    我见过其他关于此的问题 但没有一个得到真正的回答 而且没有一个是我的问题 我有一个新系统 emacs 23 1 Centos 6 2 我认为 我下载了最新的 pymacs 并安装了它 但是 我得到 error Pymacs helper d
  • scikit-learn - 具有置信区间的 ROC 曲线

    我可以使用 ROC 曲线scikit learn with fpr tpr thresholds metrics roc curve y true y pred pos label 1 where y true是基于我的黄金标准的值列表 即
  • 有效地减去不同形状的 numpy 数组

    使用 numpy 出色的广播规则 您可以减去形状 3 数组v来自形状 5 3 数组X with X v 结果是一个形状 5 3 数组 其中每一行i是有区别的X i v 有没有办法减去形状 n 3 数组w from X使得每一行w从整个数组中
  • Django 抛出此错误:SMTPException:服务器不支持 STARTTLS 扩展

    由于 gmail 中发送邮件的限制 我在我的一台服务器上安装了 exim4 设置如下 dc eximconfig configtype internet dc other hostnames mydomain com localhost l
  • Apache2 mod_wsgi 403 禁止错误

    我已经正确配置了它 但后来我决定重新安装我的 Debian 顺便从 wheezy 切换到 jessie 版本 问题是这样的 我有一个 python mod wsgi 应用程序 mnt doc Python www index py ls l
  • 如何找到运行代码的 conda 环境的名称?

    我正在寻找一种好方法来从正在运行的代码或交互式 python 实例中找出我所在的 conda 环境的名称 用例是我通过 miniconda 安装运行带有 Python 2 和 Python 3 内核的 Jupyter 笔记本 默认环境是Py
  • 如何让 list_blobs 表现得像 gsutil

    我只想获得 GCS 上假文件夹结构的第一级 如果我运行例如 gsutil ls gs gcp public data sentinel 2 tiles 我得到一个这样的列表 gs gcp public data sentinel 2 til
  • 如何解析代码(Python)?

    我需要解析一些特殊的数据结构 它们采用某种类似 C 的格式 大致如下所示 Group GroupName C Style comment Group AnotherGroupName Entry some variables 0 3 141
  • numpy 沿第一个轴添加

    我想通过简单地沿第一个轴执行相同的加法来添加两个具有不同维度的数组 非矢量化解决方案 x np array 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 shape 4 3 2 y np a
  • Seaborn 分组条形图,使用总值而不是平均值

    我有一个关于如何组织数据以使用 seaborn 制作条形图的问题 我的数据输入如下所示 influencer platform reach person a instagram 10000 person b instagram 5000 p

随机推荐

  • RT-Thread之线程的诞生与消亡史

    1 引言 本文基于Cotex M内核处理器分析讨论RT Thread中线程从创建到消亡的整个详细过程 线程的载体 控制块 RT Thread中是用线程控制块来描述线程实体的 在 RT Thread 中 线程控制块由结构体 struct rt
  • 数字化信道

    数字化信道 数字化信道主要包括多相滤波和DFT两个模块 多相滤波 多相滤波 就是将滤波器系数按照相数进行重排 在D倍抽取后 整个频带的频谱将混叠在0频附近 F s
  • 二分查找的总结

    一 二分查找 1 思路分析 这道题目的前提是数组为有序数组 同时题目还强调数组中无重复元素 因为一旦有重复元素 使用二分查找法返回的元素下标可能不是唯一的 这些都是使用二分法的前提条件 当大家看到题目描述满足如上条件的时候 可要想一想是不是
  • 2022第十三届蓝桥杯国赛真题javaB组

    文章目录 试题A 重合次数 试题B 数数 试题C 左移右移 试题D 窗口 试题E 迷宫 试题F 小球称重 试题G 背包与魔法 试题H 修路 试题I 围栏 试题J 好数之和 试题A 重合次数 本题总分 5 分 问题描述 在同一天中 从上午6
  • eclipse debug进入.class_Eclipse的安装与使用

    相信大家在用记事本编译运行java程序的同时肯定心里有不少怨言吧 要是用这种工具编译一个复杂点的程序简直就有想死的心了 更不用说什么大的网站项目了 接下来阿Q就带领大家了解一个全新的编译工具Eclipse Eclipse的安装 首先进入ec
  • JS字符串转数字

    目录 parseInt parseFloat Number JavaScript中有三种方法可以将字符串转换为数字 parseInt parseInt 函数可以将字符串转换成整数 它会忽略字符串的开头空格 并读取尽可能多的数字字符 直到遇到
  • 2.4.5 Profile CPU参数

    最后更新2021 07 19 CPU的状态 参数表现出来的是分区的状态和参数 Power 6 7小型机 分区有3种模式 Shared Dedicated Shared dedicated partition Dedicated分区同时选择了
  • 求职笔记-操作系统-动态链接库、静态链接库区别

    dll什么意思 动态链接库 存放的是各类程序的函数实现过程 当程序需要调用函数时 需要先载入DLL 然后取得函数的地址 最后进行调用 使用DLL文件的好处是程序不需要在运行之初加载所有代码 只有在程序需要某个函数的时候才从DLL中取出 还可
  • linux防火墙 ( cent7.*)常用操作:

    cent7 防火墙操作 注意开通或关闭端口后 一定要重启防火墙服务 重装防火墙 不然无法生效 1 查看 系统防火墙是否开启 firewall cmd state 2 开启 关闭 重启访火墙 永久关闭防火墙 必须先临时关闭防火墙 再执行该命令
  • Mac终端如何查找具体文件的详细路径

    find 命令 find iname test Boston CSV csv
  • 毕业设计-基于计算机图像识别的垃圾智能分类系统

    目录 前言 课题背景和意义 实现技术思路 一 YOLOv3 算法 二 基于 Tensorflow2 的 YOLOv3 算法垃圾识别 三 总结 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业
  • win10远程桌面连接提示身份验证错误,要求的函数不受支持的解决方案

    报错信息 出现问题的原因是微软最近发布的更新补丁 要求服务器端和用户端都更新后才可以连接 最简单粗暴地方式就是卸载自己电脑的更新 而下面的这种方法需要修改注册列表 解决方案 1 WIN R 然后运行 regedit 命令 2 找到路径 HK
  • MySQL——无法打开MySQL8.0软件安装包或者安装过程中失败,如何解决?

    在运行MySQL8 0软件安装包之前 用户需要确保系统中已经安装了 Net Framework相关软件 如果缺少此软件 将不能正常地安装MySQL8 0软件 解决方案 到这个地址 https www microsoft com en us
  • 51 单片机占用 RAM 分析

    51 单片机占用 RAM 分析 简介 很久不用 51 单片机了 再拿起 51 的东西 发现之前学的时候遗漏很多细节 比如 RAM 的占用情况 都哪些会占用 RAM 空间 当时学习的时候从来没有注意过 包括用上 32 位的 MCU 之后也不怎
  • 学习SVG(八)文本

    简介 在SVG中除了绘图外 还可以添加文本 需要使用
  • 直播预告

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 6月9日晚7 30 9 00 AI TIME特别邀请了三位优秀的讲者跟大家共同开启ICLR专场六 哔哩哔哩直播通道 扫码关注AITIME哔哩哔哩官方账号 观看直播 链接 http
  • 前沿探索|关于 AIGC 的「幻觉/梦游」问题

    AI语言模型的梦游是指模型产生内容与真实世界不符或者是毫无意义的情况 这种情况主要是由于语言模型缺乏真实世界的知识和语言的含义 导致模型难以理解和表达现实世界的概念和信息 这种情况在现代自然语言处理中普遍存在 尤其是在开放式生成领域的问题中
  • 分享一个可以下载全球geojson经纬度信息的网址

    https gadm org download country html
  • MySQL数据库语言一、DDL

    作者简介 正在努力的99年打工人 宣言 人生就是B birth 和D death 之间的C choise 做好每一个选择 创作不易 动动小手给个点赞加关注吧 有什么意见评论区告诉我 一起学习 目录 前言 什么是数据库 DDL语句 创建库 创
  • Python获取微信好友地址以及性别并生成可视化图表

    简介 使用python批量获取微信好友地址 需要使用itchat库 这个库是用的网页版微信的接口进行数据获取的 所以你想测试这个功能必须要你的微信能够登录网页版微信 之前的itchat uos模块使用了统信版的接口绕过了腾讯的检测 所有的微