当前位置: 首页 > 科技观察

使用Python获取微信好友数据,可视化分析找出

时间:2023-03-16 21:15:50 科技观察

本文转载请联系志斌python笔记公众号。大家好,我是志斌~最近志斌因为公众号加了很多好友,所以想看看爬取微信好友,然后理性分析~~需要源码的读者加志斌微信获取~1.数据采集我们使用了Itchat库来获取微信好友数据。1登录要使用Itchat库获取微信好友数据,需要先登录。代码如下:itchat.auto_login(hotReload=True)hotReload=True的作用是短时间内获取数据,不需要重复登录验证。2获取好友数据Itchat库的get_friends()函数可以获取所有好友的数据。但是它获取到的数据类型是Itchat类型,因为我们不需要使用正则表达式来提取数据,所以我们需要将数据转换成字符串类型,代码如下:all_friends=str(itchat.get_friends())至此,我们就可以提取数据了。这里我们提取了朋友的签名,朋友的性别,朋友的省市。这四个数据用于可视化显示。代码如下:#signatureSignature=re.findall("'Signature':'([\u4e00-\u9fa5].*?)',",all_friends)c=0foriinSignature:withopen(r'Signature.txt','a')asf:try:f.write(i)except:pass#Sex=re.findall("'Sex':(.*?),",all_friends)man=woman=other=0foriinSex:ifi=='1':man+=1elifi=='2':woman+=1else:other+=1#省市数据shengfens=re.findall(r"'省':'(.*?)',",all_friends)chengshis=re.findall(r"'City':'(.*?)',",all_friends)#绘制朋友的省份分布图shengfen=[]foriinrange(len(shengfens)):ifshengfens[i]=='':passelse:shengfen.append(shengfens[i])#绘制河南省友人分布图chengshi=[]foriinrange(len(chengshis)):ifshengfens[i]=='Henan':chengshi.append(chengshis[i])2.可视化展示我们一共获取了973个好友的数据,下面将数据进行可视化展示。1签名词云可视化通过对所有好友个人签名的词云进行可视化,我们发现努力、生命、时间、世界、一无所有是最常见的词。似乎大多数朋友都倾向于和这些词有关。代码如下:withopen("signature.txt",)asf:job_title_1=f.read()job_title_2=re.sub('span','',job_title_1)job_title_3=re.sub('class','',job_title_2)job_title_4=re.sub('表情符号','',job_title_3)job_title_5=re.sub('我自己','',job_title_4)job_title_6=re.sub('回复','',job_title_5)#job_title_7=re.sub('at','',job_title_6)contents_cut_job_title=jieba.cut(job_title_6)contents_list_job_title="".join(contents_cut_job_title)wc=WordCloud(stopwords=STOPWORDS.add("One"),collocations=False,background_color="white",font_path=r"K:\苏新诗刘开剑.ttf",width=400,height=300,random_state=42,mask=imread('xin.jpg',pilmode="RGB"))wc.generate(contents_list_job_title)wc.to_file("recommendation.png")2性别数量图表通过可视化好友性别,发现我们有543位男性好友,318位女性好友,还有112人没有填写这个物品信息。3省份分布图我们可视化了这973个好友所在的省份,发现我们的好友集中在河南,有263人,其次是广东,有69人。河南的朋友最多,大概是因为志斌是河南人吧。代码如下:province_distribution=dict(Counter(shengfen).most_common())provice=list(province_distribution.keys())values=list(province_distribution.values())map=Map("中国地图",width=1200,height=600)map.add("",provice,values,visual_range=[0,200],maptype='china',is_visualmap=True,visual_text_color='#000',is_label_show=True)map.render(路径="map.html")4河南省的好友分布通过上面的分析,我们发现自己的好友在河南最多,于是志斌又将自己在河南省的好友分布按地市进行了可视化。从展示图片中我们发现,最多的朋友集中在郑州,有116人,其次是鹤壁,有38人。志斌的家人是鹤壁人,在郑州上学。郑州的朋友比鹤壁多,大概是因为上了大学吧。手机引起的。代码如下:city=[]values=[]fork,vindict(Counter(chengshi).most_common()).items():city.append(k+'city')values.append(v)map2=Map("河南地图",'河南',width=1200,height=600)map2.add('河南',city,values,visual_range=[1,25],maptype='河南',is_visualmap=True,visual_text_color='#000')map2.render(path="河南地图.html")三、总结1、本文详细介绍了使用Itchat库获取四类好友数据的方法,并进行了可视化展示。2、Itchat库的登录是网页版的登录。如果使用,首先要确保可以登录网页版微信,否则可能无法爬取数据。3、本文仅供学习参考,不得用于其他用途。