Python获取好友地区分布及好友性别分布情况代码详解
作者:故事胶片 发布时间:2023-05-12 12:59:35
利用Python + wxpy 可以快速的查询自己好友的地区分布情况,以及好友的性别分布数量。还可以批量下载好友的头像,拼接成大图。
本次教程是基于上次机器人后的,所有依赖模块都可以复用上次的,还不知道的小伙伴可以戳这里。
python + wxpy 机器人
准备工作
编辑器
一个注册一年以上的微信号
公共部分代码
from wxpy import * // wxpy 依赖
from PIL import Image // 二维码登录依赖
import os // 本地下载依赖
import math
import webbrowser
from pyecharts import Map // 地图展示依赖
from pyecharts import Pie // 饼状图依赖1. 批量下载好友头像
# 创建头像存放文件夹
def avaterPath():
avaterDir = os.path.join(os.getcwd(), 'wechat')
if not os.path.exists(avaterDir):
os.mkdir(avaterDir)
return avaterDir
# 获取所有的好友头像并保存
def saveWxAvater(avaterDir):
bot = Bot(cache_path=True)
allFriends = bot.friends(update=True)
num = 0
for friend in allFriends:
friend.getAvatar(os.path.join(avaterDir,f'{str(num)}.jpg'))
print("好友昵称:%s"%friend.name)
num += 1
# 拼接头像
def joinAvatar(path):
# 获取文件夹内头像个数
length = len(os.listdir(path))
# 设置画布大小
image_size = 2560
# 设置每个头像大小
each_size = math.ceil(2560 / math.floor(math.sqrt(length)))
# 计算所需各行列的头像数量
x_lines = math.ceil(math.sqrt(length))
y_lines = math.ceil(math.sqrt(length))
image = Image.new('RGB', (each_size * x_lines, each_size * y_lines))
x = 0
y = 0
for (root, dirs, files) in os.walk(path):
for pic_name in files:
try:
with Image.open(os.path.join(path, pic_name)) as img:
img = img.resize((each_size, each_size))
image.paste(img, (x * each_size, y * each_size))
x += 1
if x == x_lines:
x = 0
y += 1
except Exception as e:
print(F"头像读取失败,错误:{e}")
img = image.save(os.path.join(os.getcwd(), 'wechat.png'))
print('wx好友头像拼接完成!')
if __name__ == '__main__':
avatarDir = avaterPath()
saveWxAvater(avatarDir)
joinAvatar(avatarDir)
2. 获取好友性别分布
bot = Bot(cache_path=True) # 弹出二维码登录微信,生成bot对象
allFriends = bot.friends() # 获取所有的微信好友信息
type = ['男同学','女同学','外星人'] # 男/女/未知性别好友名称
v = [0, 0, 0] # 初始化对象好友数量
# 遍历所有好友,判断该好友性别
for friend in friends:
if friend.sex == 1:
v[0] += 1
elif friend.sex == 2:
v[1] += 1
else:
v[2] += 1
pie = Pie("好友性别分布")
pie.add("", type, v, is_label_show=True)
pie.render("sex.html")
webbrowser.open('sex.html')
效果
3. 获取好友地区分布情况
代码部分:
bot = Bot(cache_path=True) # 弹出二维码登录微信,生成bot对象
allFriends = bot.friends() # 获取所有的微信好友信息
areaDic = {} # 定义一个空字典,用于存放省市以及省市人数
for friend in allFriends:
if friend.province not in areaDic:
areaDic[friend.province] = 1
else:
areaDic[friend.province] += 1
keys = area_dic.keys()
v = area_dic.values()
map = Map("好友地域分布", width=1200, height=600)
map.add("好友地域分布" ,keys, v, maptype='china', is_visualmap=True)
map.render("area.html")
webbrowser.open("area.html")
总结
以上所述是小编给大家介绍的Python获取好友地区分布及好友性别分布情况代码详解,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://juejin.im/post/5d2486386fb9a07eb55f832f


猜你喜欢
- Python 中常用的数据类型包括:数字类型:包括整型(int)、长整型(long)、浮点型(float)、复数型(comple
- 1.安装python windows版本好:python-2.5.1.msi2.安装pycrypto windows版本号:py
- 之前使用bootstrap写了一个报表表格,最近突然找到我,说让我看看能不能将表格的表头和第一列进行固定,这样的话方便查看数据,于是,我开始
- 为了得到更加清晰的图像我们需要通过技术对图像进行处理,比如使用对比度增强的方法来处理图像,对比度增强就是对图像输出的灰度级放大到指定的程度,
- Tensorflow二维、三维、四维矩阵运算(矩阵相乘,点乘,行/列累加)1. 矩阵相乘 根据矩阵相乘的匹配原则,左乘矩阵的列数要等于右乘矩
- 当我们开始精通编程语言时,我们不仅希望实现最终目标,而且希望使我们的程序高效。在这个教程中,我们将学习一些Ipython的命令,这些命令可以
- 实例如下:String.prototype.trim = function (char, type) { if (char) {
- 本文实例讲述了Python实现求最大公约数及判断素数的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/env pytho
- 赶快记录一下,只是懂皮毛,或许多积累就好了import sysfrom PyQt4 import QtGuiclass MainWindow
- 1.pickle 写: 以写方式打开一个文件描述符,调用pickle.dump把对象写进去 &
- 在进行数据库的查询时,会经常遇到这样的情况:例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例
- 今天为大家介绍几个Python“装逼”实例代码,python绘制樱花、玫瑰、圣诞树代码实例,主要使用了turtle库Python绘制樱花代码
- 本文实例讲述了go语言里包的用法。分享给大家供大家参考。具体分析如下:每个 Go 程序都是由包组成的。程序运行的入口是包 main。这个程序
- 1、引言小丝:鱼哥, 请教你个问题。小鱼:你觉得你得问题,是正儿八经的吗?小丝:那必须的, 人都正经,何况问题呢?小鱼:那可不敢说, 你得问
- 如果你是一位前端开发工程师,对“跨平台”一词应该不会感到陌生。像常见的前端框架:比如React、Vue、Angular,它们可以做网页端,也
- Python 中有很多很实用的语法糖,这些语法糖可以帮助我们简化代码、更易理解等优点,接下里再看一个 Python3 * 别实用的语法序列解
- 1.Airbus Ship Detection Challengeurl: https://www.kaggle.com/comp
- 跳表跳表,又叫做跳跃表、跳跃列表,在有序链表的基础上增加了“跳跃”的功能,由William Pugh于1990年发布,设计的初衷是为了取代平
- 用Python来编写机器学习方面的代码是相当简单的,因为Python下有很多关于机器学习的库。其中下面三个库numpy,scipy,matp
- 使用php就不一样了,php包含了zlib的链接库,可以直接使用其相关功能,下面是我写的压缩和结压缩swf文件的例子: //没有加入判断sw