首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我用微信所有好友的个性签名,画了一只猫,附教程&源码

就是这货

昨天小宅做了个小实验,抓取微信所有好友个性签名,画了一只猫,发到朋友圈,没想到被好多人点赞留言索要教程,应大家要求小宅写了个教程,顺便把源码放上来,感兴趣的拿走吧~

画 猫 教 程

要用到三个外加库:itchat、jieba、wordcloud

jieba:是一个强大分词库,支持中文分词。

wordcloud:是一个用词云的库。

#首先安装这三个库吧

pip install itchat

pip install jieba

pip install wordcloud

#登陆微信获取好友的个性签名

itchat.login()

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

for i in friends:

signature = i["Signature"]

#这里有个问题,有大量span,class,emoji,emoji1f3c3等字段。这都是个性签名的一些表情符号,所以要写个正则表达式过滤掉的没用的信息,然后把每个个性签名都添加到一个列表中,拼接成字符串。修改之后成这样了。

tList = []

for i in friends:

signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")

rep = re.compile("1f\d.+")

signature = rep.sub("", signature)

tList.append(signature)

text = "".join(tList)

#接来下用jieba库把字符串进行分词

wordlist_jieba = jieba.cut(text, cut_all=True)

wl_space_split = " ".join(wordlist_jieba)

好了,接下来就是绘制词云了。打开词云生成的样子图片,这里就是这只猫啦,大家记得把这只猫图片保存到运行代码根目录,并与代码的命名一致,这里小宅取名:mao.jpg。当然,大家也可以换成其他图片试试效果。

#打开目录下Wordcloud生成图片,如:mao.jpg

#创建词云对象,其中'C:\Windows\Fonts\SIMLI.TTF'是用于生成词云的字体,对于 mac系统需要更改font路径,比如:/Users/sebastian/Library/Fonts/Arial Unicode.ttf

my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,

max_font_size=40, random_state=42,

font_path='C:\Windows\Fonts\SIMLI.TTF')\

.generate(wl_space_split)

#根据照片的颜色,对词云染色,显示出来

image_colors = ImageColorGenerator(alice_coloring)

plt.imshow(my_wordcloud.recolor(color_func=image_colors))

plt.imshow(my_wordcloud)

plt.axis("off")

plt.show()

教程讲解完了,接下来讲下运行流程吧

运 行 流 程

调试好代码,运行之后,会弹出一个二维码,微信扫一扫登陆。

在手机端确认登陆

稍等几秒钟,就可以绘制成功了,并弹出Figure展示绘制结果,大家可以在这里调整画面大小并保存图片。

好了,一直可爱的猫就搞定了,大家还可以试试其他图片的词云拼图。这里有个小问题大家需要注意下,程序执行一次之后,经常会弹出二维码,关掉程序就好了,可能是itchat接口的问题,附上完整的源代码给大家。

画 猫 源 码

向上滑动阅览

# coding:utf-8

#导入需要用到的各种库

import itchat

import re

import jieba

import matplotlib.pyplot as plt

from wordcloud import WordCloud, ImageColorGenerator

import os

import numpy as np

import PIL.Image as Image

#登陆微信,获取好友列表

itchat.login()

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

tList = []

#获取好友个性签名

for i in friends:

signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")

rep = re.compile("1f\d.+")

signature = rep.sub("", signature)

tList.append(signature)

# 拼接字符串

text = "".join(tList)

# jieba分词

wordlist_jieba = jieba.cut(text, cut_all=True)

wl_space_split = " ".join(wordlist_jieba)

# wordcloud词云

# 打开目录下需要Wordcloud生成图片,如:mao.jpg

d = os.path.dirname(__file__)

alice_coloring = np.array(Image.open(os.path.join(d, "mao.jpg")))

#创建词云对象,其中'C:\Windows\Fonts\SIMLI.TTF'是生成词云的对象

# 对于 mac系统需要更改font路径,如:/Users/sebastian/Library/Fonts/Arial Unicode.ttf

my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,

max_font_size=40, random_state=42,

font_path='C:\Windows\Fonts\SIMLI.TTF')\

.generate(wl_space_split)

#根据照片的颜色,对词云染色,显示出来

image_colors = ImageColorGenerator(alice_coloring)

plt.imshow(my_wordcloud.recolor(color_func=image_colors))

plt.imshow(my_wordcloud)

plt.axis("off")

plt.show()

我是小宅

爱科技 爱生活 爱分享

版权声明:转载文章,注明来源

欢 迎 关 注 本 公 众 号

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180126G0MAWQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券