itchat+pillow实现微信好友头像爬取和拼接

源码下载链接:https://pan.baidu.com/s/1cPZhwy 密码:2t2o

###效果图


使用方法:

下载项目到本地,打开项目主目录,打开命令行,输入:

pip install -r requirements.txt
 
使用pip命令时出了一个错:You are using pip version 7.0.3, however version 9.0.1 is available.
解决方法:
使用easy_install指令安装:
首先进入到easy_install的目录 例如D:\Python\Scripts
然后通过指令 easy_install.exe pip==9.0.1 安装成功。

之后又提示了一个错误: error: Unable to find vcvarsall.bat
解决方法:
我的python版本是3.6 ,网上多数解决方法是降级到2.X。不过我找到一个包,链接:https://pan.baidu.com/s/1pM6mdYj 密码:s3mk
下载之后按照正常方式安装, 装完就解决了。

等待安装完成,输入:

python wxImage.py

出现如下二维码:

用手机微信右上角的扫一扫,确认登陆即可。在微信的“文件传输助手”会收到你的好友头像拼接图(等待时间取决于你的好友数量)


核心

python:

  • itchat(用于爬取头像)
  • pillow(用于拼接图片)


##源码详解

首先登陆python版本微信itchat,生成二维码:

itchat.auto_login(enableCmdQR=True)

获取好友列表:

friends = itchat.get_friends(update=True)[0:]

然后使用itchat的get_head_img(userName=none)函数来爬取好友列表的头像,并下载到本地:

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

计算出每张头像缩小后的尺寸(由于为了拼接之后可以用来作为为微信头像,所以合成的图片大小都是640 * 640的,因为微信头像大小就是640 * 640)

计算每张头像缩小后的边长(默认为正方形):

eachsize = int(math.sqrt(float(640 * 640) / numPic))

计算合成图片每一边分为多少小边:

numline = int(640 / eachsize)

缩小并拼接图片:

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 == numline:
            x = 0
            y += 1

保存图片到本地:

toImage.save(user + ".jpg")

在微信的文件传输助手发合成后的图片给使用者:

itchat.send_image(user + ".jpg", ‘filehelper‘)


###完整代码:

from numpy import *
import itchat
import urllib
import requests
import os

import PIL.Image as Image
from os import listdir
import math

itchat.auto_login(enableCmdQR=True)

friends = itchat.get_friends(update=True)[0:]

user = friends[0]["UserName"]

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)

numPic = len(pics)

print(numPic)

eachsize = int(math.sqrt(float(640 * 640) / numPic))

print(eachsize)

numline = int(640 / eachsize)

toImage = Image.new(‘RGBA‘, (640, 640))

print(numline)

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 == numline:
            x = 0
            y += 1

toImage.save(user + ".jpg")

itchat.send_image(user + ".jpg", ‘filehelper‘)

 

原文地址:https://www.cnblogs.com/scios/p/8436327.html

时间: 2024-07-31 02:17:14

itchat+pillow实现微信好友头像爬取和拼接的相关文章

爬微信好友头像

从其他地方学的2个爬微信好友头像的方法,分享下,侵删. #coding:utf-8import itchatimport mathimport PIL.Image as Imageimport os itchat.auto_login()friends = itchat.get_friends(update=True)[0:]user = friends[0]["UserName"] num = 0for i in friends: img = itchat.get_head_img(

Python3 生成微信好友头像的图片合集

刚才在github上看到一个大神写的生成微信好友图像集合的脚本 自己运行了一下发现挺好玩的 原帖地址:https://github.com/aloneZERO/py-party/tree/master/wechat-imgs #!python3 # coding: utf-8 import itchat import os from PIL import Image import math # 首先登陆python版本微信itchat,生成二维码 # itchat.auto_login(enab

【转】Python微信好友头像拼接图

转自:Python微信好友头像拼接图 今天在朋友圈看到有人发了微信好友拼接图,心里满是新奇,看了下评论才知道用Python写的.心里痒痒,立马就安装了下Python. 安装好了之后,看了下大神的代码,基本上能够读得懂(语言都是想通的嘛!),然后就尝试在小黑窗运行了,结果报错了! rawmode = RAWMODE[im.mode] KeyError: 'RGBA' 这种错误看的我是一脸懵逼啊,搜索了半天也没看到什么解决方案,结果就在宁外一篇博客的评论里面发现了解决方法,结果成功运行,还是66的.

itchat库初探--微信好友全头像的拼接

代码: 1 import itchat 2 import math 3 import PIL.Image as Image 4 import os 5 6 itchat.auto_login() 7 friends = itchat.get_friends(update=True)[0:] 8 user = friends[0]["UserName"] 9 10 num = 0 11 for i in friends: 12 img = itchat.get_head_img(user

python统计自己微信好友并抓取信息

前几天统计自己好友性别,看看男女比例,发现竟然还要其他分类的,很好奇都是谁,所以空闲下来抓取所有好友看一下. 这边使用了itchat库,网上资料很多.不多说,直接上代码 import itchat import re from xlwt import * # 登录 itchat.login() # 获取好友列表 friends = itchat.get_friends(update=True)[0:] file = Workbook(encoding = 'utf-8') #指定file以utf

微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”

微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友的动态,而朋友圈中或虚或实的状态更新,似乎都在证明自己的"有趣",寻找那份或有或无的存在感. 有人选择在朋友圈记录生活的点滴,有人选择在朋友圈展示自己的观点.有时我们想去展示自己,有时又想去窥探着别人的生活,而有时又不想别人过多的了解自己的生活,或是屏蔽对方,或是不给对方看朋友圈,又或是不

微信公众号批量爬取java版

最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很大困扰.后来在知乎上看到了一位大牛用php写的微信公众号爬取程序,就直接按大佬的思路整了整搞成java的了.改造途中遇到蛮多细节问题,拿出来分享一下. 附上大牛文章链接:https://zhuanlan.zhihu.com/c_65943221  写php的或者只需要爬取思路的可以直接看这个,思路写

Python 一键制作微信好友图片墙的方法

用 Python 代码怎么实现的,代码不长,60 行就可以搞定. 核心是利用三个个库: wxpy 库,用于获取好友头像然后下载Pillow 库,用于拼接头像Pyinstaller 库,用来打包 Python 程序成 exe 文件程序通过三个函数实现,第一个 creat_filepath 函数生成图片下载文件路径,第二个 save_avatar 函数循环获取微信好友头像然后保存到本地,第三个 joint_avatar 函数就是把头像拼接成一张大图. 完整代码如下: from wxpy import

我用 Python 爬取微信好友,最后发现一个大秘密

前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在学习 itchat,然后就写了一个爬虫,爬取了我所有的微信好友的数据.并对其中的一些数据进行分析,发现了一些很有趣的事. 然后通过 itchat.get_friends() 这个函数就可以获取到自己好友的相关信息,这些信息是一个 json 数据返回.然后我们就可以根据这些返回的信息,进行正则匹配抓取