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

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

简介

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/943425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存