使用python itchat包爬取微信好友头像形成矩形头像集的方法
作者:袁杰丶 发布时间:2021-02-01 17:54:10
标签:python,itchat,头像
初学python,我们必须干点有意思的事!从微信下手吧!
头像集样例如下:
大家可以发朋友圈开启辨认大赛哈哈~
话不多说,直接上代码,注释我写了比较多,大家应该能看懂
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') # 自动向文件助手里面添加图片,不需要可以关闭
运行结果:
ok!!!
来源:https://blog.csdn.net/Abysscarry/article/details/79148584


猜你喜欢
- 1.什么是Appiumappium是一个开源的测试自动化框架,可以与原生的、混合的和移动的web应用程序一直使用。它使用WebDriver协
- 一、为何使用Tkinter而非PyQt众所周知,在Python中创建图形界面程序有很多种的选择,其中PyQt和wxPython都是很热门的模
- 一般开发,SQL Server的数据库所有者为dbo.但是为了安全,有时候可能把它换成其它的名称,所有者变换不是很方便.这里列出两种供参考
- 本文实例讲述了Flask框架Flask-Login用法。分享给大家供大家参考,具体如下:Flask-Login插件中带了6种信号,可以基于其
- 进程、线程和协程进程的定义:进程,是计算机中已运行程序的实体。程序本身只是指令、数据及其组织形式的描述,进程才是程序的真正运行实例。线程的定
- 写在前面:这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组件在小程序中是滑块视图容器。我
- 跑代码时,在命令行给python程序传入bool参数,但无法传入False,无论传入True还是False,程序里面都是True。下面是代码
- str_replace — 子字符串替换 [str_replace]mixed str_replace ( mixed
- 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹;打开了python项目后,需要配置该项目对应的pytho
- 2020.3.7准备scrapy,使用anaconda创建一个新的环境,执行“conda create -n scrapyEnv pytho
- js 数组对象操作方法如下:1. 创建数组var array1 = [1,2] //方法一var array2 = new Ar
- 语句格式:numpy.zeros(shape, dtype=float, order='C')参数说明:shape:整型或元
- Go 中接口也是一个使用得非常频繁的特性,好的软件设计往往离不开接口的使用,比如依赖倒置原则(通过抽象出接口,分离了具体实现与实际使用的耦合
- 本文为大家分享了微信小程序实现留言板的具体实现方法,供大家参考,具体内容如下先说一下小程序的开发环境之类的基础东西1.到微信公众平台下载开发
- ASP.net与SQLite数据库通过js和ashx交互(连接和操作):废话(也是思路):用的是VS2010,打算做网站前后台。由于不喜欢前
- 1. 为什么要查看梯度对于初学者来说网络经常不收敛,loss很奇怪(就是不收敛),所以怀疑是反向传播中梯度的问题(1)求导之后的数(的绝对值
- 现在使用CSS网页布局,摒弃了传统Table表格布局的模式,但是Table表格在网页中还是少不了的,因为当需要输出表格类数据时,就应该使用表
- 就是一个简单的python查询百度关键词排名的函数,以下是一些简介:1、UA随机2、操作简单方便,直接getRank(关键词,域名)就可以了
- 本文实例为大家分享了python比特币初始配置的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*- "
- 10月9日是国庆中秋黄金周后上班的第一天,当天近8亿人次逛淘宝,即淘宝网每分钟完成43.47万元的交易,创下国内网购单天交易最高纪录。从销售