Python实现爬取好友头像拼接成大图!这不就暴露了我的好友了!

前言

笔者无意间发现一个有趣的第三方库itchat,itchat模块是一位叫little

codersh的大神写的模块,附上大神的github地址,有兴趣的朋友可以去尝试玩一下itchat模块,很有趣的!!!

https://github.com/littlecodersh/ItChat


进群:548377875    即可获取数十套PDF以及大量的学习教程哦!

依赖环境

Python3.6

Sublime Text 3

window10


整体流程是: 爬取头像—保存头像—剪切图片—将成果发送到手机传输助手


步骤

1.首先安装itchat,使用pip安装颇为简单

pip install inchat

2.将微信好友头像爬取下来

from numpy import *
import itchat
import PIL.Image as Image
from os import listdir
def get_imgs():#完成主要的下载头像的任务
 #使用热登录(已经登录的程序,再一次运行程序不需要扫描验证码),执行这一步就会有二维码需要扫描登录
 itchat.auto_login(hotReload=True)
 #获取朋友列表,返回字典类型的数据集,获取好友的索引数
 friends = itchat.get_friends(update=True)[0:]
 #为图片命名的变量
 num = 0
 #遍历好友列表
 for i in friends:
 #获取好友的头像
 img = itchat.get_head_img(userName=i["UserName"])
 #在项目文件的主创建一个user文件用于放头像,并写入对应的图片名,空白的
 fileImage = open( "./user/" + str(num) + ".jpg",'wb')
 #将获取到的头像文件写到创建的图片文件中
 fileImage.write(img)
 #关闭资源
 fileImage.close()
 num += 1

代码讲解

导入我们需要用到的itchat模块,定义一个爬取头像的函数get_big_img()

使用itchat.auto_login()完成登录,这是会在文件夹中生成一个itchat.pkl的文件用于登录,下次再登录时不需要扫码了

使用itchat.get_friends()完成朋友列表的信息获取,再循环列表用itchat.get_head_img()获取头像并保存到user文件夹中,这里我们完成就第一步

3.拼接头像

#制作大的大头像
def get_big_img():
 #获取usr文件夹所有文件的名称
 pics = listdir("use")
 numPic = len(pics)
 #创建图片大小
 toImage = Image.new("RGB", (800, 800))
 #用于图片的位置
 x = 0
 y = 0
 #遍历user文件夹的图片
 for i in pics:
 try:
 #依次打开图片
 img = Image.open("use/{}".format(i))
 except IOError:
 print("Error: 没有找到文件或读取文件失败",i)
 else:
 #重新设置图片的大小
 img = img.resize((50, 50), Image.ANTIALIAS)
 #将图片粘贴到最后的大图片上,需要注意对应的位置
 toImage.paste(img, (x * 50, y * 50))
 #设置每一行排16个图像
 x += 1
 if x == 17:
 x = 0
 y += 1
 #保存图片为bigPhoto.jpg
 toImage.save("use/" +"bigPhoto.jpg")
 #将做好图片发送东自己的手机上
 itchat.send_image("use/" +"bigPhoto.jpg", 'filehelper')
#定义执行的主函数
def main():
 get_imgs()
 get_big_img()
#运行
if __name__=="__main__":
 main()
  • 头像获取下来自然需要拼接,这里我们使用PIL库完成,如果没有安装的可以使用pip完成安装
  • 我们使用Image.new()函数新建一张空白图片,然后把保存在文件夹中的图片,使用img.resize()函数进行剪切成50*50大小,再把50*50的图片粘贴到空白图片上就完成了

4.贴一下源代码

from numpy import *
import itchat
import PIL.Image as Image
from os import listdir
def get_imgs():#完成主要的下载头像的任务
 #使用热登录(已经登录的程序,再一次运行程序不需要扫描验证码),执行这一步就会有二维码需要扫描登录
 itchat.auto_login(hotReload=True)
 #获取朋友列表,返回字典类型的数据集,获取好友的索引数
 friends = itchat.get_friends(update=True)[0:]
 #为图片命名的变量
 num = 0
 #遍历好友列表
 for i in friends:
 #获取好友的头像
 img = itchat.get_head_img(userName=i["UserName"])
 #在项目文件的主创建一个user文件用于放头像,并写入对应的图片名,空白的
 fileImage = open( "./user/" + str(num) + ".jpg",'wb')
 #将获取到的头像文件写到创建的图片文件中
 fileImage.write(img)
 #关闭资源
 fileImage.close()
 num += 1
#制作大的大头像
def get_big_img():
 #获取usr文件夹所有文件的名称
 pics = listdir("use")
 numPic = len(pics)
 #创建图片大小
 toImage = Image.new("RGB", (800, 800))
 #用于图片的位置
 x = 0
 y = 0
 #遍历user文件夹的图片
 for i in pics:
 try:
 #依次打开图片
 img = Image.open("use/{}".format(i))
 except IOError:
 print("Error: 没有找到文件或读取文件失败",i)
 else:
 #重新设置图片的大小
 img = img.resize((50, 50), Image.ANTIALIAS)
 #将图片粘贴到最后的大图片上,需要注意对应的位置
 toImage.paste(img, (x * 50, y * 50))
 #设置每一行排16个图像
 x += 1
 if x == 17:
 x = 0
 y += 1
 #保存图片为bigPhoto.jpg
 toImage.save("use/" +"bigPhoto.jpg")
 #将做好图片发送东自己的手机上
 itchat.send_image("use/" +"bigPhoto.jpg", 'filehelper')
#定义执行的主函数
def main():
 get_imgs()
 get_big_img()
#运行
if __name__=="__main__":
 main()

  • 在最后我们编写主函数main(),再运行函数即可

事实上itchat能完成的事远远不止于此,做一个微信机器人出来也不是不可能的,在下一期我们再进行讲解

Python实现爬取好友头像拼接成大图!这不就暴露了我的好友了!

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/84197945