使用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通过urllib2爬网页上种子下载示例
Feb 24 Python
python实现连接mongodb的方法
May 08 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
详解如何利用Cython为Python代码加速
Jan 27 Python
Python实现查看系统启动项功能示例
May 10 Python
Python实现的多进程和多线程功能示例
May 29 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
浅谈python锁与死锁问题
Aug 14 Python
详解Django中的FBV和CBV对比分析
Mar 01 Python
Python实现为PDF去除水印的示例代码
Apr 03 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
discuz目录文件资料汇总
2014/12/30 PHP
php生成短域名函数
2015/03/23 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
php封装的page分页类完整实例
2016/10/18 PHP
php的socket编程详解
2016/11/20 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php-msf源码详解
2017/12/25 PHP
密码框显示提示文字jquery示例
2013/08/29 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
python装饰器初探(推荐)
2016/07/21 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
工厂总经理岗位职责
2014/02/07 职场文书
村干部承诺书
2014/03/28 职场文书
工作评语大全
2014/04/26 职场文书
工程造价专业求职信
2014/07/17 职场文书
初中体育教学随笔
2015/08/15 职场文书
初中思品教学反思
2016/02/20 职场文书
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android