跟着某乎玩python(三)

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

本篇“玩python”来源答主链接:

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

环境配置:

1.系统环境:Windows 7 64bit
2.编译环境:Python3.4.3
3.依赖库: requests itchat PIL
4.其他工具:微信手机客户端 手机 微信账号(- -)

代码浅析

使用python登录微信网页版

itchat.auto_login(enableCmdQR=True)

代码很简单,调用itchat的方法,会在终端弹出二维码,扫一扫就会登录网页版。在这一步出错,只能说相关的库版本不对或者没装,而我在这里出现的是一个这种错误:SSLError: HTTPSConnectionPool(host='login.weixin.qq.com', port=443,而google一下,发现有的答案是说pyOpenSSL库不是最新,于是敲下:
pip install pyOpenSSL搞定,自动安装最新版本。

获取好友头像

friends = itchat.get_friends(update=True)[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(width*length),如果想合成多少尺寸的图片都可自由选择,计算思路也是小学数学,面积啊,边长啊等等,不再赘述。

合成图片

NewImage = Image.new('RGBA', (newsizeW, newsizeL))
x = 0
y = 0
pics = glob.glob(r"*.jpg")
for i in pics:
    try:
        #打开图片
        img = Image.open(i)
    except IOError:
        print("Error: 没有找到文件或读取文件失败")
    else:
        #缩小图片
        img = img.resize((smallsize,smallsize ), Image.ANTIALIAS)
        #拼接图片
        NewImage.paste(img, (x *smallsize , y *smallsize ))
        x += 1
        if x == numline:
            x = 0
            y += 1
NewImage.save(user + ".jpg")            

实际上下载完就可以退出微信,据说微信要整改,禁止网页多登陆,防止被封号,建议在下载完就退出。可以用itchat.logout()。这一步踩到一个坑,就是except异常的时候,当你的好友没有设置头像时,就会打开图像异常。然后当时第一判断是名字读错,打印些log出来,发现是在打开27.jpg会异常,点开文件夹一看,原来是没有图像。手动删除(好懒啊),程序又成了专门定制,无法通用。

效果图

回顾与思考

  • python有各种各样的库来做一些好玩有趣的事情,但是基础一定要好,尽量避免出现不必要的bug。
  • 尽量打开思路,不一定被原作者束缚,像这个原作个人认为代码写的并不优秀,但是也有借鉴之处。
  • 坚持继续学习,工作再忙也要搞搞python。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值