本文介绍了利用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()
领取专属 10元无门槛券
私享最新 技术干货