前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬取所有微信好友头像,制作微信好友图片墙

Python爬取所有微信好友头像,制作微信好友图片墙

作者头像
秃头哥编程
发布2019-07-04 15:54:15
7K1
发布2019-07-04 15:54:15
举报
文章被收录于专栏:秃头哥编程秃头哥编程

今天咱就试试怎么爬取微信列表中所有好友的头像,并做成一张图片墙,代码不长,60 行就可以搞定。

核心是利用三个库:

  • wxpy 库,用于获取好友头像然后下载
  • Pillow 库,用于拼接头像
  • Pyinstaller 库,用来打包 Python 程序成 exe 文件

程序通过三个函数实现,第一个 creat_filepath 函数生成图片下载文件路径,第二个 save_avatar 函数循环获取微信好友头像然后保存到本地,第三个 joint_avatar 函数就是把头像拼接成一张大图。

完整代码如下:

代码语言:javascript
复制
from wxpy import *
import math
from PIL import Image
import os

# 创建头像存放文件夹
def create_filePath():
    avatar_dir = os.getcwd() + "\\wechat\\";
    if not os.path.exists(avatar_dir):
        os.mkdir(avatar_dir)
    return avatar_dir

# 保存好友头像
def save_avatr(avatar_dir):
    # 初始化机器人,扫码登录
    bot = Bot()
    friends = bot.friends(update=True)
    num = 0
    for friend in friends:
        friend.get_avatar(avatar_dir + '\\' + str(num) + ".jpg")
        print('好友昵称:%s' % friend.nick_name)
        num = num + 1

# 拼接头像
def joint_avatar(path):
    # 获取文件内头像个数
    length = len(os.listdir(path))
    # 设置画布大小
    image_size = 2500
    # 设置每个头像大小
    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(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 IOError:
                print("头像读取失败")
    img = image.save(os.getcwd() + "/wechat.png")
    print('微信好友头像拼接完成!')

if __name__ == '__main__':
    avatar_dir = create_filePath()
    save_avatr(avatar_dir)
    joint_avatar(avatar_dir)

点击运行就可以直接运行

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秃头哥编程 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档