在Anaconda下完成,参考https://blog.csdn.net/zhonglixianyun/article/details/78229782

结果图:

1. 需要的库

numpy, os,

itchat, wordcloud, jieba,

1) 安装itchat

由于在Anaconda下运行,安装外部库要在\Anacoda\Scripts目录下,pip默认是把东西安装在系统python环境中,即C:\Python27\Lib\site-packages中,因而无法在annocanda环境中调用,所以会出现这样的问题

解决办法:在D:\Anacoda\Scripts中 把pip.exe和pip-script.py改成condapip.exe和condapip-script.py (改名字只是为了和系统python环境中的pip区分)。然后cmd中要用anaconda环境安装包就在\Anacoda\Scripts 下使用condapip install XXX就好了,想用系统的Python环境就直接pip install .....

2) 安装jieba

cmd-在\Anacoda\Scripts 下-condapip install XXX

3) 安装wordcloud

wordcloud不能直接安装,需要先下载对应python+计算机的版本wordcloud-1.3.2-cp36-cp36m-win_amd64.whl

下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

然后在\Anacoda\Scripts 下 condapip install,将whl文件直接拖进来即可

2. 在目录下保存一张词云的底图,用来确定词云形状 配色

3. 代码

import itchat
import re  # 先登录,扫二维码登录微信
itchat.login()
#获取好友列表,返回的是json信息
friends = itchat.get_friends(update=True)[0:]
#打印好友列表信息
#print(friends)
tList = []
for i in friends:  # 获取个性签名,替换掉span,class,emoji  signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")  # 正则匹配过滤掉emoji表情,例如emoji1f3c3等  rep = re.compile("1f\d.+")  signature = rep.sub("", signature)  tList.append(signature)  # 拼接字符串
text = "".join(tList)  # jieba分词
import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)  # wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image  #d = os.path.dirname(__file__)
#找一张微信logo图来生成配色方案,微信logo图wechat.jpg路径在F:\\盘下
alice_coloring = np.array(Image.open(os.path.join('F:\\','we9.jpg')))
# 这里要选择字体存放路径,win的字体在C:/windows/Fonts中
"""#my_wordcloud = WordCloud().generate(wl_space_split) 默认构造函数
my_wordcloud = WordCloud( background_color='white',    # 设置背景颜色 mask = abel_mask,        # 设置背景图片 max_words = 200,            # 设置最大显示的字数 stopwords = STOPWORDS,        # 设置停用词 font_path = C:/Users/Windows/fonts/simkai.ttf',  # 设置字体格式,如不设置显示不了中文 max_font_size = 50,            # 设置字体最大值 random_state = 30,            # 设置有多少种随机生成状态,即有多少种配色方案 scale=.5 ).generate(wl_space_split)"""
my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,  max_font_size=40, random_state=42,  font_path='C:/Windows/Fonts/simhei.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()  # 保存图片到F:\\盘下 并发送到手机里的文件传输助手(filehelper)里
my_wordcloud.to_file(os.path.join('F:\\','wechat_cloud.png'))
itchat.send_image("F:\\wechat_cloud.png", 'filehelper')  

4. 问题:

1) [Errno 2] No such file or directory

原因:人为的给名为wechat的jpg文件又加了.jpg存储

2) 报错unexpected character after line continuation character

my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,  max_font_size=40, random_state=42,  font_path='C:/Windows/Fonts/simhei.ttf')\
.generate(wl_space_split)

原因:换行符 是 空格+\   ,这里没加空格,加上空格或者直接变为一行就可以了

5. 学习笔记

1) re 模块

Regular Expression,正则表达式

2) spider 的调试debug

a = 'a'
b = 'b'
c = 'c'
e = 'e'
f = 'f'
g = 'g'
h = 'h'
print(a)

1] 调试

调试前,在ipython中输入%reset 把工作空间的所有变量清除,以免影响测试

先不打断点,用debug (Ctrl+F5)的方式运行。

出现ipdb提示符,说明进入调试模式

在提示符后输入c(continue),程序继续执行到下一个断点。程序结束。

* 即使没打断点,也会在第一句执行之前中断,未执行第一句。c=.

* q退出调试

2] 断点

a. 普通的breakpoint,双击行首

ipython中箭头指示执行到第几行,在断点前结束

ipdb> !f
*** NameError: name 'f' is not definedipdb> !e
'e'

*!(python语句), 在当前状态下执行该python语句,例如!f可查看f变量,f==4可临时赋值

b. 带条件的breakpoint,Ctrl+Shift+双击行首

在框内可输入断点的条件,可以是任意返回True / False 的Python语句,例如(a==4)and(b==5)

发现断点不起作用,因为不满足条件。

q结束,重新Ctrl+F5进入debug,会自动在第一行开始前停住,

可以按=Ctrl+F10 单行单行的执行

c. 其他

Step Into,进入函数内部

Return , 跳出来.

3] 调试常用命令

常用命令:
  • ENTER(重复上次命令)
  • a(在某个def中打印这个def接收到的所有arguements)
  • b(在某行设置breakpoint)
  • c(继续)直到触碰下一个breakpoint
  • l( 可以列出当前将要运行的代码块)
  • ll(列出整个tree)
  • r(运行直到子程序结束)
    • r(eturn) 继续执行,直到函数体返回
  • !<python 命令>
    • n(ext) 让程序运行下一行,如果当前语句有一个函数调用,用 n 是不会进入被调用的函数体中的
      • s(tep) 跟 n 相似,但是如果当前有一个函数调用,那么 s 会进入被调用的函数体中
    • j(ump) 让程序跳转到指定的行数
  • h(帮助)
  • a(rgs) 打印当前函数的参数
  • p(rint) 最有用的命令之一,打印某个变量
  • pp locals() 在某个def中打印该def中的局部变量
  • pp globals() 打印全局变量
  • q(uit) 退出调试

6. 细节

#获取好友列表,返回的是json信息

friends = itchat.get_friends(update=True)[0:] ,friends列表存储了所有好友的下列信息。

* 任取 i = friends[1], 以其中一个好友为例 , 可以看到‘Signature’‘City’‘Sex’等标签的信息

* 获取对应标签的信息   可以i["xxx"]任取

* replace()方法的语法

str.replace(old, new[, max])  例如:str.replace("is", "was", 3);    max 指定替换次数不超过3次

例如

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

1] python 爬取微信好友个性签名,生成词云相关推荐

  1. 玩转Python :获取微信好友个性签名生成词云

    运行结果: 需要用到的库itchat.matplotlib.re.wordcloud.jieba. import itchat import re import jieba import matplo ...

  2. 使用python抓取微信好友个性签名并形成词云(itchat;wordcloud)

    我主要参考这篇文章进行实践:点击打开链接 python版本:3.5 首先整体步骤分为两步:第一步,抓取好友个性签名,这一步主要依靠itchat实现:第二步,分词并形成词云,主要依靠jieba和word ...

  3. python爬取QQ空间说说并生成词云

    以下是生成的词云图  我的环境:Mac,Anaconda,Python2.7,以及各种用到的Python库 先来说下Anaconda Anaconda 是一个可用于科学计算的 Python 发行版,支 ...

  4. Python入门--爬取淘宝评论并生成词云

    Python爬取淘宝评论并生成词云 最新修改于2021/04/01 所需相关Python第三方库(目前最新版本即可) 推荐使用Anaconda,其使用十分方便.快捷. requests库 json库 ...

  5. 我用 Python 爬取微信好友,最后发现一个大秘密

    前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...

  6. 用Python爬取B站弹幕并做成词云

    用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...

  7. python爬虫爬微信数据可信吗_我用 Python 爬取微信好友,最后发现一个大秘密

    前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...

  8. python爬取微信好友_如何用 Python 爬取自己的微信朋友

    原标题:如何用 Python 爬取自己的微信朋友 作者 Alfred 本文转载自网络,如涉及侵权请及时联系我们 微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天.分 ...

  9. Python爬取微信好友的信息

    最近在学习python的过程中发现了一些比较好玩的东西----------爬取微信好友的信息,并可以制作一些酷炫的效果,比如:统计微信好友男女比例.实现图灵机器人自动回复消息.抓取好友头像并拼接成图. ...

最新文章

  1. 初学redux笔记,及一个最简单的redux实例
  2. 【渝粤题库】陕西师范大学200971教育经济学 作业(专升本、高起本)
  3. 跨模块中的分配内存问题
  4. 深度学习笔记(14) 评估指标
  5. 答简书安卓公测群里朋友的提问
  6. Vue3.0 + Ts 项目使用element-plus 自动按需导入 使用v-loading报错
  7. Android安全补丁程序下载,2017年一月win7安全补丁更新包官方下载-2017Win7安全更新补丁包64位下载-西西软件下载...
  8. 【CarMaker学习笔记】申请使用账号
  9. VC与VS的版本对应关系,VC到底是什么?为啥总提示缺少VC
  10. 发言倒计时器_单面会议计时器 会议发言倒计时器
  11. 基于QT框架的离线词典应用程序
  12. 动态规划,计算股票最大收益
  13. AVS2 有点令人不敢相信
  14. Java成员方法getinfo_Java Swagger.getInfo方法代码示例
  15. MSTAR雷达数据集总结
  16. Fiddler抓包工具常见功能介绍,还不会的进来看
  17. 官网实例详解4.37(pretrained_word_embeddings.py)-keras学习笔记四
  18. EN 14915实木镶板和包层—CE认证
  19. 趣头条app sign
  20. PTA 7-5 彩虹瓶

热门文章

  1. “智慧工地“有哪些高科技?一起来看看
  2. 从谷歌流感趋势谈大数据分析的光荣与陷阱
  3. 场景化分析rem布局原理
  4. LCD1602的解读(详细步骤分析)
  5. java 数据库保存 高德地图 行政区域
  6. [生而为人-思考] Knowledge Cooking -3rd 分享会记录
  7. java开发——什么时候使用枚举类型?为什么要用枚举类型?
  8. 企业增长过程中的「伪命题」
  9. C语言写的md5函数
  10. 模拟生态圈_模拟器之争 夜神构建手游PC化生态圈