使用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从入门到精通(DAY 2)
Dec 20 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
分享一下如何编写高效且优雅的 Python 代码
Sep 07 Python
python正则实现计算器功能
Dec 14 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Python异常模块traceback用法实例分析
Oct 22 Python
Python3 元组tuple入门基础
Feb 09 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
PyQt实现计数器的方法示例
Jan 18 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
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
对python的bytes类型数据split分割切片方法
2018/12/04 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python中对数据进行各种排序的方法
2019/07/02 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
美术教学感言
2014/02/22 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
开场白怎么写
2015/06/01 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
React如何创建组件
2021/06/27 Javascript
MySQL分区以及建索引的方法总结
2022/04/13 MySQL