使用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中的几种函数
Nov 03 Python
python文件选择对话框的操作方法
Jun 27 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
python3 实现口罩抽签的功能
Mar 11 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
Python发送邮件实现基础解析
Aug 14 Python
python两个list[]相加的实现方法
Sep 23 Python
Django xadmin安装及使用详解
Oct 26 Python
Python使用pyenv实现多环境管理
Feb 05 Python
利用Pycharm连接服务器的全过程记录
Jul 01 Python
Python语言内置数据类型
Feb 24 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读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
python爬虫实现中英翻译词典
2019/06/25 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Python如何使用input函数获取输入
2020/08/06 Python
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
What is view? why do we have view?
2012/06/22 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
《黄山奇石》教学反思
2014/04/19 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
单位病假条范文
2015/08/17 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python