使用python itchat包爬取微信好友头像形成矩形头像集的方法


Posted in Python onFebruary 21, 2019

初学python,我们必须干点有意思的事!从微信下手吧!

头像集样例如下:

使用python itchat包爬取微信好友头像形成矩形头像集的方法

大家可以发朋友圈开启辨认大赛哈哈~

话不多说,直接上代码,注释我写了比较多,大家应该能看懂

import itchat
import os
import PIL.Image as Image
from os import listdir
import math
import sys

print("请输入查询模式:0-显示所有好友头像,但最终矩形头像集最后一行可能残缺;1-头像集为完整矩形,但好友可能不全,即在0模式下舍弃最后一行")
mode = input()
if mode not in ("0","1"):
  print("请按照正确格式输入!")
  sys.exit(0)


# itchat.auto_login(enableCmdQR=True) # 这种登录时控制台生成登录二维码
itchat.login() # 这种登录是生成二维码图片在本地目录

friends = itchat.get_friends(update=True)[0:]  # 核心:得到frieds列表集,内含很多信息

user = friends[0]["UserName"]

w = open(user+"_friends",'a',encoding='utf-8',errors='ignore') # 将friends列表存下来,看看内容
for i in friends:
  w.write(str(i))

print("授权微信用户为:"+user)

os.mkdir(user) # 创建文件夹用于装载所有好友头像

num = 0

for i in friends:
  img = itchat.get_head_img(userName=i["UserName"])
  fileImage = open(user + "/" + str(num) + ".jpg",'wb')
  fileImage.write(img)
  fileImage.close()
  num += 1

pics = listdir(user)  # 得到user目录下的所有文件,即各个好友头像

numPic = len(pics)

print("所有好友头像数:"+ str(numPic))

eachsize = int(math.sqrt(float(640 * 640) / numPic))  # 先圈定每个正方形小头像的边长,如果嫌小可以加大

print("小正方形头像边长:"+ str(eachsize))


numrow = int(640 / eachsize)
print("一行小头像数:"+ str(numrow))

if mode == "0":
  numcol = int(math.ceil(numPic * 1.0 / numrow))  # 向上取整
else:
  numcol = int(numPic / numrow)  # 向下取整
  print("舍弃好友数:"+ str(numPic - numrow * numcol))

toImage = Image.new('RGB', (eachsize*numrow, eachsize*numcol)) # 先生成头像集模板


x = 0  # 小头像拼接时的左上角横坐标
y = 0  # 小头像拼接时的左上角纵坐标


for i in pics:
  try:
    #打开图片
    img = Image.open(user + "/" + i)
  except IOError:
    print("Error: 没有找到文件或读取文件失败")
  else:
    #缩小图片
    img = img.resize((eachsize, eachsize), Image.ANTIALIAS)
    #拼接图片
    toImage.paste(img, (x * eachsize, y * eachsize))
    x += 1
    if x == numrow:
      x = 0
      y += 1


toImage.save(user + ".jpg")

# itchat.send_image(user + ".jpg", 'filehelper')  # 自动向文件助手里面添加图片,不需要可以关闭

运行结果:

使用python itchat包爬取微信好友头像形成矩形头像集的方法

ok!!!

以上这篇使用python itchat包爬取微信好友头像形成矩形头像集的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python OS模块常用函数说明
May 23 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
Python selenium如何设置等待时间
Sep 15 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
基于python3实现socket文件传输和校验
Jul 28 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
python实现单链表的方法示例
Sep 03 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
Python接口自动化判断元素原理解析
Feb 24 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 #Python
用python实现刷点击率的示例代码
Feb 21 #Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
Feb 21 #Python
python根据文章标题内容自动生成摘要的实例
Feb 21 #Python
python3.6实现学生信息管理系统
Feb 21 #Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 #Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 #Python
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
php实现的二分查找算法示例
2017/06/20 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
在Django中创建动态视图的教程
2015/07/15 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
python实现感知机模型的示例
2020/09/30 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
给护士表扬信
2014/01/19 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
Redis特殊数据类型bitmap位图
2022/06/01 Redis