# Python玩微信（1）:初探wxpy

## Python玩微信（1）:初探wxpy

### 1.前期准备

wxpy项目主页里面有它的相关介绍
pyecharts项目主页，是python与百度echarts的桥梁，我用来做数据分析

### 2.查看微信好友男女比例

``````from wxpy import *
from pyecharts import Pie

bot = Bot(cache_path = True)   #定义一个微信机器人
friends = bot.friends(update=False)   #获取更新好友列表
male = female = other = 0

for i in friends[1:]:     #[1:]是因为整个好友列表里面自己市在第一个，排除掉
sex = i.sex
if sex == 1:
male += 1
elif sex == 2:
female += 1
else:
other += 1
total = len(friends[1:])   #计算总数

#下面为分析
attr = ["男性","女性","其他"]
v1 = [float(male),float(female),float(other)]
pie = Pie("饼图-圆环图示例", title_pos='center')
pie.add("", attr, v1, radius=[40, 75], label_text_color=None, is_label_show=True,
legend_orient='vertical', legend_pos='left')
pie.render("sex.html")
``````

enter description here

### 3.查看好友地区分布

``````from wxpy import *
from pyecharts import Map

#因为获取的列表城市都没有带市字，而pyecharts需要带个市字
b = '市'
def s(x):
return x+b

#因为我好友里面除了广东的外和其他的，剩下非广东的寥寥无几，所以只提取广东的
bot = Bot(cache_path = True)
friends = bot.friends(update=False).search(province = '广东')
citys = []
for f in friends :
city = f.city
citys.append(city)
r = map(s,citys)
cityss = list(r)

#为城市计数
a = {}
for i in cityss:
a[i] = cityss.count(i)
a.pop('市')

#把字典进行有序拆分为2个列表
attrs = []
values = []
for value, attr in a.items():
values.append(attr)
attrs.append(value)
#开始绘图
map = Map("广东地图示例", width=1200, height=600)
map.add("", attrs, values, maptype='广东', is_visualmap=True, visual_text_color='#000')
map.render("city.html")

``````

enter description here

### 4.查看好友签名，并利用jieba分词，再制作成词云

``````from wxpy import *
import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import PIL.Image as Image

bot = Bot(cache_path = True)
friends = bot.friends(update=False)
male = female = other = 0

#提取好友签名，并去掉span，class，emoji，emoji1f3c3等的字段
signatures = []
for i in friends:
signature = i.signature.strip().replace("span", "").replace("class", "").replace("emoji", "")
# 正则匹配过滤掉emoji表情，例如emoji1f3c3等
rep = re.compile("1f\d.+")
signature = rep.sub("", signature)
signatures.append(signature)
# 拼接字符串
text = "".join(signatures)
# jieba分词
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)

# wordcloud词云
my_wordcloud = WordCloud(background_color="white",
max_words=2000,
max_font_size=1000,
random_state=42,
font_path='./hanyi.ttf').generate(wl_space_split)

plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
``````

enter description here

### 推荐阅读更多精彩内容

• Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
passiontim阅读 142,677评论 18 611
• 一、图文排版编辑器 135编辑器 秀米：秀米 XIUMI i排版：i排版-微信图文编辑器 新媒体排版：xmt.cn...
李巨伦阅读 19,368评论 9 423
• 今天星期日，起床有点迟了，起床后做了两件事： 一是品茶敬佛祖，感恩佛祖 感恩时代！ 二是为孙子准备早餐——包馄饨，...
吾吾斋阅读 51评论 0 0
• 今天分享《高效能人士的七个习惯》之双赢思维、知彼解己、统合综效和不断更新。 柯维说:“工作本身并不能带来经济上的安...
小碗月牙阅读 29评论 0 2