01 前言+展示

各位小伙伴我又来啦。今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云。怎样,有趣吧~好了,下面开始干活。我知道你们还是想先看看效果的。

后台登录:


词云:

02 环境准备

Python版本:3.6.0
系统平台:Windows 10 X64
IDE:pycharm

相关模块:
re模块;
itchat模块;
jieba模块;
import matplotlib.pyplot模块;
wordcloud模块;
以及一些Python自带的模块。

03 获取个性签名

首先要做的,当然还是登录微信,获取好友的个性签名啦:

 1import itchat
2# 先登录
3itchat.login()
4
5# 获取好友列表
6 friends = itchat.get_friends(update=True)[0:]
7 for i in friends:
8    # 获取个性签名
9    signature = i["Signature"]
10print(signature)

但是获取下来之后我们会发现,有大量的span,class,emoji,emoji1f3c3等的字段:

这是因为个性签名中使用了表情符号,这些字段我们都是要过滤掉的,所以写个正则和然后用replace方法去掉吧。

04 过滤掉emoji表情

这次把相关字段给replace成空格先:

1# 获取好友列表
2friends = itchat.get_friends(update=True)[0:]
3for i in friends:
4  signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")# 获取个性签名
5  print(signature)

然后发现,还是不太妥当:

这里要借助一下re了,写个正则把这些统统干掉:

1# 获取好友列表
2friends = itchat.get_friends(update=True)[0:]
3for i in friends:
4  signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")# 获取个性签名
5  rep = re.compile("< =.+/>")# 正则匹配过滤掉emoji表情,例如emoji1f3c3等
6  signature = rep.sub("", signature)
7  print(signature)

为了照顾新手朋友,这里直接用了最简单的正则形式,把尖括号两端的直接匹配然后干掉,不过一般不推荐这样干。推荐用这样的表达式rep = re.compile("[^\u4e00-\u9fa5^]")。关于正则和re大家还是自己去找资料学习吧。然后perfect了:

05 制作词云

接来下用jieba分词,然后制作成词云,在此之前记得安装jieba和wordcloud库。

 1 # jieba分词
2 wordlist_jieba = jieba.cut(text, cut_all=True)
3 wl_space_split = " ".join(wordlist_jieba)
4
5 # 这里要选择字体存放路径,win的字体在windows/Fonts中
6 # #如果是中文必须要添加字体路径,否则会显示成框框
7 my_wordcloud = WordCloud(background_color="white", width=1600, height=1200,
8                         font_path='C:\Windows\Fonts\苹方\PingFang Bold_0.ttf').generate(wl_space_split)
9
10plt.imshow(my_wordcloud)
11plt.axis("off")
12plt.show()

记得要设置好中文路径哦。

效果图:

06 完整代码

欲获取代码,请关注我们的微信公众号【程序猿声】,在后台回复:pycode02。即可获取。

微信公众号

推荐文章:10分钟教你用Python做个打飞机小游戏超详细教程
推荐文章:10分钟教你用python下载和拼接微信好友头像图片

10分钟教你用Python玩转微信之抓取好友个性签名制作词云的更多相关文章

  1. 10分钟教你用Python玩转微信之好友性别比例统计分析

    01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...

  2. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  3. 10分钟教你用Python打造天气机器人+关键字自动回复+定时发送

    01 前言 Hello,各位小伙伴.自上次我们介绍了Python实现天气预报的功能以后,那个小程序还有诸多不完善的地方,今天,我们再次来完善一下我们的小程序.比如我们想给机器人发“天气”等关键字,它就 ...

  4. 10分钟教你用Python打造微信天气预报机器人

    01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...

  5. 【python】10分钟教你用python如何正确把妹

    前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 image 当然啦,这只是测试版的效果,真正的版本可 ...

  6. 【python】10分钟教你用python下载和拼接微信好友头像图片

    前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...

  7. 【python】10分钟教你用python一行代码搞点大新闻

    准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...

  8. 10分钟教你用Python实现微信自动回复

    01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...

  9. 【python】10分钟教你用Python做个打飞机小游戏超详细教程

    更多精彩尽在微信公众号[程序猿声] 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类clas ...

随机推荐

  1. android-tip-SocketException之ETIMEDOUT

    异常出现时间 如果我们有一个长连接,此时网络被关闭,或者暂时失去信号, 此时就会出现此异常. 如果出现此异常,则不得不重连.

  2. 对比Nginx配置文件差异

    一.概要: Python2 官方文档:https://docs.python.org/2/library/difflib.html Python2 官方文档:https://docs.python.o ...

  3. adf错误

    1>无法验证事务处理中的所有行 运行项目报错: javax.faces.el.EvaluationException: oracle.jbo.TxnValException: JBO-27023 ...

  4. leetCode--towSum

    题目链接:https://leetcode.com/problems/two-sum/description/ 此题的意思是:给定一个target值,从给定的数组中找两个数,使得这两个数的和==tar ...

  5. Linux下查看Nginx的并发连接数和连接状态-乾颐堂

    Linux下查看Nginx等的并发连接数和连接状态. 1.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$N ...

  6. btrfs的介绍与使用

    源文献:http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pcon 简单看了一下这篇文章,对其中一些机制的实现还 ...

  7. springmvc框架简单搭建

    一.利用xml 配置 1.web.xml   <web-app version="2.4"     xmlns="http://java.sun.com/xml/n ...

  8. WireShark抓包的pcap文件格式分析

    http://www.360doc.com/content/14/0220/11/15257968_354157537.shtml http://www.360doc.com/content/14/0 ...

  9. mybatis 配置延迟加载 和 缓存

    <!-- MyBatis延迟加载时,创建代理类 --> <dependency> <groupId>cglib</groupId> <artifa ...

  10. spring Aop概念

    面向切面编程(AOP)通过提供另外一种思考程序结构的途经来弥补面向对象编程(OOP)的不足.在OOP中模块化的关键单元是类(classes),而在AOP中模块化的单元则是切面.切面能对关注点进行模块化 ...