利用Python分析微信好友

本文介绍了利用Python从微信中摘取好友信息并进行分析的方法和步骤,内容摘录自帕尼尼(公众号:智能江湖),并对其中内容稍做改动,主要是导出数据包括中文时出现乱码的问题。

文章运用计量统计软件Spyder(3.2.6 MAC-Python是版本3.6) 。Spyder是一款出色的Python语言编辑器,界面类似Matlab。主要运用的包是itchat,re和jieba。

1、安装itchat包

打开 Terminal,输入pip install itchat,按Enter键确认。

2、打开spyder

安装itchat包完成后,在Terminal中输入spyder,按Enter键确认,进入Spyder界面。

3、登陆微信

输入下面的代码,用手机微信扫描出现的二维码,确认登陆。

import itchat

itchat.login()

4、摘取朋友信息

friends=itchat.get_friends(update=True)[0:]

5、分析朋友性别比例

male = female = other = 0

for i in friends[1:]:

sex=i["Sex"]

if sex == 1:

male +=1

elif sex ==2:

female +=1

else:

other+=1

total=len(friends[1:])

print("男性好友:%.2f%%"%(float(male)/total*100)+" " +

"女性好友:%.2f%%"%(float(female)/total*100)+" " +

"不明性别好友:%.2f%%"%(float(other)/total*100))

小编给大家推荐一个学习氛围超好的地方,Python学业交流:四七四五三四九五一!四千多小伙伴了吧!所以看到了快点进来吧,不然就满了!里面资料都是大家贡献的,几百个G了!什么PDF,零基础入门,爬虫,web 数据分析都是有视频加源码的。而已里面好多学生,工作了的,遇到bug了可以寻求帮助,遇到解决不了的问题也可以和大家交流,从而解决自己多时的问题。这也是一件乐事,我们不做外包,只为共同进步!

6、提取朋友姓名,性别,省份,城市和签名,输出csv表格

通过Excel可以对提取的数据进行整理。标红的部分代码可以解决中文输出为乱码的问题。

def get_var(var):

variable = []

for i in friends:

value = i[var]

variable.append(value)

return variable

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)

#the encoding part is super important

frame.to_csv('testdata.csv',index=True,encoding="utf-8-sig")

7、剔除朋友签名中的表情,空格和符号

如果re包不存在,可以通过pip install re在Terminal终端中安装。

import re

siglist = []

for i in friends:

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

rep = re.compile("1fd+w*|[/=]")

signature = rep.sub("",signature)

siglist.append(signature)

text="".join(siglist)

8、对签名文字进行分割

如果jieba包不存在,可以通过pip install jieba在Terminal终端中安装。

import jieba

wordlist=jieba.cut(text,cut_all=True)

word_space_split="".join(wordlist)

9、制作朋友签名的词云

用来作为mask的图片,只有白色部分不会被填充。最终导处一张gif图片,在朋友圈中最不易失真。

mask=imread('k.png')

wordcloud = WordCloud(max_words=1000,mask=mask,background_color='black',scale=3,

random_state = 20,width=1000, height=820,

font_path='simhei.ttf').generate(text)

#bg_pic = imread('dog2.jpeg')

#image_colors = ImageColorGenerator(bg_pic)

#plt.imshow(wordcloud.recolor(color_func=image_colors))

plt.imshow(wordcloud)

plt.axis('off')

plt.show()

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180209A08L3B00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券