#微信朋友签名云图项目
#2018-01-28 19:57:38 January Sunday the 04 week, the 028 day SZ SSMR
################获取微信朋友所有信息#################
#登陆网页版微信from urllib import request              #request 是抓取网页数据的库
from bs4 import BeautifulSoup as bs #beautifulsoup库对html代码进行解析
import re                           #引入正则表达式
import jieba                        #分词包库jieba,可以将中文语句拆解成一个个的词汇。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import numpy    #numpy计算包from wordcloud import WordCloud    import itchat
itchat.login()
friends = itchat.get_friends(update = True)[0:]
#print("friends are:",friends[2]) #观察得到的文件格式,方便下面操作
#2018-01-28 19:57:34 January Sunday the 04 week, the 028 day SZ SSMR
#爬朋友性别比例。
male = female = other = 0
#friends[0]是自己信息,爬朋友,所以从friends[1]开始
for i in friends[1:]:sex = i["Sex"]if sex == 1: #male = male + 1elif sex == 2: #女性为2female +=1else:other +=1 #其他是不明性别的(就是没有填的)
#计算朋友总数
total = len(friends[1:])
print("小哥哥比例:%.2f%%"%(float(male)/total * 100) + "\n" + "小仙女比例:%.2f%%"%(float(female)/total * 100) + "\n" + "未知比例:%.2f%%"%(float(other)/total * 100))##########分析好友城市分布###################
#定义函数,爬取不同变量
def get_var(var):variable = []for i in friends:value = i[var]variable.append(value)return variable#调用上面函数得到不同的变量信息,并且保存到CSV文件里,保存到桌面
NickName = get_var("NickName")
Sex = get_var("Sex")
Province = get_var("Province")
City = get_var("City")
Signature = get_var("Signature")
from pandas import DataFrame
data = {'NickName':NickName, 'Sex':Sex, 'Province':Province, 'City':City, 'Signature':Signature}
frame = DataFrame(data)
frame.to_csv('D:/ST/Python_work/data.csv', index = True)###############微信好友个性签名的自定义云图#################
import re       #re正则表达式模块
siglist = []
for i in friends:#调取每个签名,并且删除左右空格,删除span,class,emoji等会出现的各种表情包signature = i["Signature"].strip().replace("span","").replace("class","").replace("emoji","")rep = re.compile("1f\\d + \\w*|[<>/=]")    #用正则表达式删除<>/=signature = rep.sub("", signature)siglist.append(signature)  #添加每个签名到列表里
text = "".join(siglist)      #把列表转换为字符串格式#结巴分词包把上面的text导入
import jieba
wordlist = jieba.cut(text, cut_all = True)
word_space_split = "".join(wordlist)#清除数据中的标点符号。正则表达式。短小精悍的一个模式[\u4e00-\u9fa5]+即可匹配。将非中文字符彻底清理
#pattern = re.compile(r'[\u4e00-\u9fa5]+')
#filterdata = re.findall(pattern, comments)
#cleaned_comments = ''.join(filterdata) #放入一个字符串中,成为一个字符串
#print(cleaned_comments)#这里是用的是lcut()方法,能将中文字符串拆解成一个列表,每项都是一个词。
segment = jieba.lcut(word_space_split)
#print(segment)
#处理词汇的聚合问题,统计词频而已
words_df = pd.DataFrame({'segment':segment})
#print(words_df.head())
#查看segment和words_df的内容不是words_df.head()内容#去掉其中的高频词,没意义的词语,看”、“太”、“的”等虚词(停用词)。由于这些词汇中,有很多词是没有实际分析价值的,所以我们需要利用一个停词文件来将不必要的词处理掉。
stopwords = pd.read_csv("D:\\ST\\Python_work\\stopwords.txt", index_col = False, quoting = 3, sep = "\t", names = ['stopword'], encoding = 'utf-8')
words_df = words_df[~words_df.segment.isin(stopwords.stopword)]
#print(words_df)#统计词频
words_stat = words_df.groupby(by = ['segment'])['segment'].agg({"计数":numpy.size})
words_stat = words_stat.reset_index().sort_values(by = ["计数"], ascending = False)
#print(words_stat)#第三阶段:用词云显示效果,simhei.ttf字符格式,类似宋体之类的
wordcloud = WordCloud(font_path = "simhei.ttf", background_color = "white", max_font_size = 80)     #设置字体属性
#word_frequence 为字典类型,可以直接传入wordcloud.fit_words()
word_frequence = {x[0]:x[1] for x in words_stat.head(1000).values}wordcloud = wordcloud.fit_words(word_frequence)plt.imshow(wordcloud)plt.axis("off")
plt.show()'''
###########画云图########################
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image #coloring = np.array(Image.open("D:\\ST\\Python_work\\liu.jpg"))
my_wordcloud = WordCloud(background_color = "white", max_words = 2000,  max_font_size = 60,random_state = 42,scale = 2, font_path = "D:/ST/Python_work/SimHei.ttf").generate(word_space_split) #mask = coloring,
#image_colors = ImageColorGenerator(coloring)
#plt.imshow(my_wordcloud.recolor(color_func = image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()#第三阶段:用词云显示效果,simhei.ttf字符格式,类似宋体之类的
wordcloud = WordCloud(font_path = "D:/ST/Python_work/SimHei.ttf", background_color = "white", max_font_size = 80)       #设置字体属性
#word_frequence 为字典类型,可以直接传入wordcloud.fit_words()
word_frequence = {x[0]:x[1] for x in words_stat.head(1000).values}wordcloud = wordcloud.fit_words(word_frequence)plt.imshow(wordcloud)plt.axis("off")
plt.show()
'''

Python实现微信朋友签名云图项目相关推荐

  1. 基于Python的微信朋友圈数据可视化分析之地点

    前提 朋友圈的相关数据请参照上一篇文章<基于Python的微信朋友圈数据可视化分析之个性签名>获取,本篇文章默认需要的数据已经下载保存至本地的 csv 文件中了. 将好友的地点按照省份进行 ...

  2. python朋友圈数据分析_基于Python的微信朋友圈数据可视化分析之地点

    前提 朋友圈的相关数据请参照上一篇文章<基于Python的微信朋友圈数据可视化分析之个性签名>获取,本篇文章默认需要的数据已经下载保存至本地的 csv 文件中了. 将好友的地点按照省份进行 ...

  3. 基于Python的微信朋友圈数据可视化分析之个性签名

    需求 利用 Python 爬取微信朋友圈的个性签名,通过生成词云的方式对朋友圈的关键词进行可视化的分析. 思路 经过调研发现,通过 itchat 这个第三方的包,再结合人工扫码授权的方式可以直接调用微 ...

  4. Python + AI 微信朋友圈的故事

    本文主要记录用Python3调itchat来爬取好友信息,并且制作好友性别比例图,好友位置分析,好友所在城市TOP20 和好友个性签名词云等.涉及如下模块:     itchat :一个开源的微信个人 ...

  5. python爬微信朋友圈怎么发文字_一件有趣的事:用Python爬了自己的微信朋友圈

    原标题:一件有趣的事:用Python爬了自己的微信朋友圈 最近几天干啥都不来劲,昨晚偶然了解到Python里的itchat包,它已经完成了wechat的个人账号API接口,使爬取个人微信信息更加方便. ...

  6. python爬虫微信朋友圈怎么发文字_如何利用Python网络爬虫抓取微信朋友圈的动态(上)...

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  7. python爬微信朋友圈关键词_爬取朋友圈,Get年度关键词

    人生苦短,我用Python && C#. 1.引言 最近初学Python,写爬虫上瘾.爬了豆瓣练手,又爬了公司的论坛生成词云分析年度关键词.最近琢磨着2017又仅剩两月了,我的年度关键 ...

  8. python分析微信好友签名分析

    上一篇中我们已经得到了所有微信好友,并且分析了微信好友的地域分布. 我们同时也能得到微信好友的所有签名,对于签名我们能够通过分词,分析出使用频率比较高的词,为了直观的展现,也能够生成对应的词云: 甚至 ...

  9. python发微信朋友圈_python实现微信每日一句自动发送给喜欢的人

    本文实例为大家分享了python实现微信每日一句自动发送的具体代码,供大家参考,具体内容如下 参考了一篇博客:教你使用python实现微信每天给女朋友说晚安 代码: # -*- coding: utf ...

最新文章

  1. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
  2. 进入Xcode4,选择菜单“Product”-“Profile”,快捷键Command+I 监测内存泄露
  3. 获取某一目录之下所有文件的大小
  4. 黑客暗网叫卖Zoom账号密码,1分钱能买71个,加密大佬教袁征做人,17年前开源软件现在又火了...
  5. Matlab实用程序--图形应用-填充图
  6. Colaboratory挂载google drive的两种网盘
  7. 阿里巴巴对Java编程【常量定义】的规约
  8. Python处理文本文件案例一则
  9. matlab中garchred是什么意思,MATLAB里的aic是啥意思
  10. 【博客管理】博客资源汇总【置顶】
  11. quartz小案例及相关属性
  12. PHP 控制器怎么调接口,mvc控制器的访问与参数解析和API接口获取数据
  13. 03 - Linux下安装软件的三种方式
  14. 中国地区城市php,中国城市列表
  15. 天涯宝盒-天涯看贴脚本-只看楼主-自动翻页
  16. Omapl138 AT070TN83 lcd驱动移植
  17. 微信小程序/小游戏运行环境小结
  18. 大数据python试卷_大数据分析的python基础-中国大学mooc-试题题目及答案
  19. 使用H5Streamer轻松搭建视频监控项目
  20. 转载:html打开本地文件夹读取,显示图片

热门文章

  1. Mysql之慢查询日志详解
  2. java并发之CopyOnWirteArrayList
  3. .net backend return json string , used by frontend
  4. web端 微软 RDLC 报表插件 宽大于高 横向打印失效 解决方案
  5. Linux基本命令(二)
  6. [原创]css设置禁止中文换行
  7. Activiti 学习笔记记录(2016-8-31)
  8. 用Kickstart批量安装Linux系统、Kickstart安装,linux批量安装;Linux的Kickstart的 无人值守安装;linux pxe自动安装linux系统...
  9. 修改现有站点的主机标头
  10. ASP.NET的App_Code中放置不同语言编写的类