热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

简介使用python批量获取微信好友地址,需要使用itchat库,这个库是用的网页版微信的接口进行数据获取的。所以你想测试这个功能必须要你的微信能够登录

简介

      使用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,,, 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下载

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


推荐阅读
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
author-avatar
lee某某
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有