用Python爬取微信好友头像,才知道好友都是这样的人

用Pyhon爬取微信好友头像,才知道好友是这样的人

看你的微信头像,就知道你没见过世面

看你的微信名称,我就猜到了你是个渣男

看你的朋友圈,就能反映出你很好追

选择微信头像的纠结症

现如今,不管是常用的QQ、微信、微博等一切社交网站,还是知乎、百度、博客等一些个人网页,注册完成的第一步就是更换头像,为了给自己找一个满意的头像,表达出个人喜好,友友们可谓是绞尽脑汁,搜集头像多种多样,例如百度上搜索“男生帅气头像”、“女生可爱头像”,更或者是自拍照,然后使劲P成自己满意的头像;还有选择自己的偶像或者动漫来做头像。

根据网络调查 收集数据 分析得出

  1. 头像特别漂亮的网友,一般性格比较外向,并且他们的头像颜色也是最丰富的。
  2. 搞笑、有点疯癫性格的人,一般选择更简单、色彩较为单一的头像。
  3. 搞笑性格的人不愿意把自己的脸作为头像。即便把脸作为头像,表情在总体上也缺乏积极的情绪。
  4. 性格严谨的网友头像大多是色彩丰富、自然和明亮的。这些网友(的头像)与积极情绪的表情相关度很高,例如微笑。

中国网友总结如下:

    • 用自己照片做头像

①不管是自拍照、还是他拍照,这类人性格都很外向,交际圈儿很广。喜欢用自拍大头照做头像的,女生居多。
②男生用自己的自拍照作为头像的不多,但还是有很多人把自己的童年照作为微信头像,可能是怀恋那个纯真的童年,或是怀恋当年帅气的骚年吧。

用Python爬取微信好友头像,才知道好友都是这样的人_第1张图片用Python爬取微信好友头像,才知道好友都是这样的人_第2张图片
(图片来源于网络)

    • 其他人照片做头像

① 用网红、美女帅哥照片作为自己的头像。网友喜欢用这类照片做自己头像,内心期待自己颜值高,身材好;
②追星族用偶像的照片做头像。某些小女生喜欢用偶像的照片做头像,还会积极地和别人“推销”偶像;
③萌娃图片。首先,新晋奶爸奶妈立马就会换上自己宝宝的图片做头像,表示爱情的结晶,就是为了让大家知道我家宝宝出生了,恭喜贺喜。
用Python爬取微信好友头像,才知道好友都是这样的人_第3张图片 用Python爬取微信好友头像,才知道好友都是这样的人_第4张图片用Python爬取微信好友头像,才知道好友都是这样的人_第5张图片
(图片来源于网络)

    • 非人物照片做头像

①好多人不喜欢用人物做头像,他们大多会选择动物、漫画、静物等。这类人内向的居多,性格比较平和;
②很多养宠物的小伙伴会把自家宠物的萌照做头像。这种人往往都比较有爱心,但也从一定程度反映出,生活有点儿寂寞,需要人陪伴。
③风景照——中老年人特喜欢,他们出去玩时,拍祖国的大山大河来做头像;采风去,拍大山大河、花草树木,看到好看的风景甚是喜欢,拍一张作为自己的头像,并且好长时间不更换。
用Python爬取微信好友头像,才知道好友都是这样的人_第6张图片用Python爬取微信好友头像,才知道好友都是这样的人_第7张图片
(图片来源于网络)

    • 频繁更换头像

①有些人特别喜欢换头像,隔山差五换一个。这类人一般都喜好很多,看到好看的图就想换头像。再者,他们也比较闲。有时间闲逛,到处搜索好看的图片。所以,大家记得给这类人备注好姓名哦~不然,人家来找你聊天,你认错人。这就尴尬了…

综上结论,我用Python来爬取微信好友头像

接下来,我就用Python爬取微信,来收取我微信好友所有好友的微信头像,并且把这些头像全部放在一张图上,保存下来,看图识人,哈哈哈…

效果图

用Python爬取微信好友头像,才知道好友都是这样的人_第8张图片

程序思路

语言环境:Python 3.7
工具:Pycharm

程序步骤

(1)用pip命令安装好程序库,直接导入

import itchat
import PIL.Image as Image
import math
import os

(2)登录微信

if __name__ == '__main__':
    itchat.auto_login(True)  # 登录微信
    friends = itchat.get_friends(update=True)[0:]
    avatar_file_path = make_path()
    save_avatar(avatar_file_path)
    merge_avatar(avatar_file_path)

(3)用itchat库就可以自动获取微信头像,直接调用,然后保存在规定的目录中。

def make_path():
    avatar_dir = 'avatar'
    avatar_file_path = r'E:\\' + avatar_dir
    if not os.path.exists(avatar_file_path):
        os.makedirs(avatar_file_path)
    return avatar_file_path


def save_avatar(avatar_file_path):
    num = 0
    for friend in friends:
        img = itchat.get_head_img(userName=friend['UserName'])
        sava_path = avatar_file_path + '\\' + str(num) + '.png'
        try:
            with open(sava_path, 'wb') as f:
                f.write(img)
                print('正在保存第' + str(num) + '张头像')
        except Exception as e:
            print(e)
        num += 1

(4)头像合成,定义一个白色背景图,画布大小为810*810,根据这个大小可以把微信头像填入到画布中,程序处理完成时既可以在目录下保存这张头像大集合照。

def merge_avatar(path):
    length = len(os.listdir(path))    # 获取头像文件夹内的文件个数
    each_size = int(math.sqrt(float(810 * 810) / length))  
    lines = int(810 / each_size)     
    image = Image.new('RGBA', (810, 810), 'white')     
    x = 0
    y = 0
    for i in range(0, length):
        try:
            img = Image.open(path + '\\' + str(i) + ".png")
        except IOError:
            print("Error")
        else:
            img = img.resize((each_size, each_size), Image.ANTIALIAS)
            image.paste(img, (x * each_size, y * each_size))
            x += 1
            if x == lines:
                x = 0
                y += 1
    image.save(path + '\\' + "all.png")
    image.show()

你可能感兴趣的:(Python)