热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。

​​导语​真正的猛男,就要~吸猫吸猫!!——————————————————————————————————————​​​hello&

​​导语

图片


真正的猛男,就要~吸猫吸猫!!

——————————————————————————————————————

​​​hello,大家好,我是木子!

有的猫靠颜值,

有的猫靠机灵性格,

但有这么一只猫,靠睡觉能吃,当当当当~隆重为大家介绍这是我养的小团子,

”对!没错,本喵大名叫团子,小名还没取“

​​

​哈哈哈~这两张照片还是很久之前拍的!无聊的时候跟团子玩玩,逗逗猫咪还是很有趣的!心情也会变好撒!

​​

养猫人养猫魂,养猫都是人上人~hhhhhh.

好了!说了这么多的题外话,不过也不算是题外话,今天小编带大家做的跟猫咪还是有点点关系的啦。

制作猫咪版本的词云图~是爬取微信所有好友的个性签名制作而成的哦!

正文

先上效果😍😍

图片

原理简介:

其实很简单的,大家可以通过网页版的微信,扫码登录后去抓包爬取信息,还可以post去发送信息,也可以使用别人做好的微信接口库。

小编这里用的是一个开源的微信个人号接口itchat,作者@LittleCoder,用python搞的,提供的接口很简单,对于懂python的人,估计一会儿就搞定了~

环境安装:

itchat:是一个开源的微信个人号接口。

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

wordcloud:是一个用词云的库。

#首先安装这三个库吧pip install itchatpip install jiebapip 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生成图片。

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()

教程讲解完了,接下来讲下运行流程吧​咳咳咳~很多新手的小伙伴儿可以注意看下下面的运行操作哈~

(1)调试好代码,运行之后,会弹出一个二维码,微信扫一扫登陆,在手机端确认登陆。

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

图片

附源码:

# coding:utf-8#导入需要用到的各种库import itchatimport reimport jiebaimport matplotlib.pyplot as pltfrom wordcloud import WordCloud, ImageColorGeneratorimport osimport numpy as npimport 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.jpgd = 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.ttfmy_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()

​总结

好了,一直可爱的猫就搞定了,大家还可以试试其他图片的词云拼图哦——

​🎊🎊源码基地:关注小编获取哦~💝记得三连吖 免费领取福利以及文章项目源码素材!!

这里有个小问题大家需要注意下,程序执行一次之后,经常会弹出二维码,关掉程序就好了,可能是itchat接口的问题。

图片

“大小姐驾到,统统闪开!”


推荐阅读
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 我在使用 AngularJS 的路由功能开发单页应用 (SPA),但需要支持 IE7(包括 IE8 的 IE7 兼容模式)。我希望浏览器的历史记录功能能够正常工作,即使需要使用 jQuery 插件。 ... [详细]
  • 本文介绍了如何在 Vue 3 组合 API 中正确设置 setup() 函数的 TypeScript 类型,以避免隐式 any 类型的问题。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
author-avatar
会丶有那么一天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有