爬自己的微信好友遇到的问题

背景:

初学python,跟着网上博客做《爬自己的微信好友》。

参考文章:https://blog.csdn.net/sun_wangdong/article/details/79050230

实验环境:

Python 3.6+ Jupyter notebook

实验代码:

import itchat #导入模块
itchat.login() #微信扫描弹出的二维码图片,登录
friends = itchat.get_friends(update=True)[0:]  #爬取自己所有的好友信息,并生成一个list

1.统计好友男女比例

#初始化计数器
male = female = other = 0
#friends[0]是自己的信息,所以要从friends[1]开始
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) + "\n" +
"女性好友: %.2f%%" % (float(female) / total * 100) + "\n" +
"不明性别好友: %.2f%%" % (float(other) / total * 100))

之后会输出打印自己朋友的男女比例,我的是:

男性好友: 78.08%
女性好友: 15.75%
不明性别好友: 6.16%

2.自己微信好友的城市分布

def get_var(var): #???

variable = [] for i in friends: value = i[var] variable.append(value) return variable生成固定格式的列表,存储为csv格式
from pandas import DataFrame
data = {'NickName': NickName, 'Sex': Sex, 'Province': Province,
        'City': City, 'Signature': Signature}
frame = DataFrame(data)
frame.to_csv('data.csv', index=True)

但有个问题,data.csv文件用excel打开乱码,Editplus打开后正常。

用网上说的另存为utf-8编码,还是乱码。

我的最终对策是:Edit打开后,另存为Unicode编码,可以正常显示了。

3.

import re
siglist = []
for i in friends:
    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)
import jieba
wordlist = jieba.cut(text, cut_all=True)
word_space_split = " ".join(wordlist)
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
coloring = np.array(Image.open("C:\\Users\\guohua\\Desktop\\abc.jpg"))
my_wordcloud = WordCloud(background_color="white", max_words=150,
                         mask=coloring, max_font_size=60, random_state=42, scale=2,
                         font_path= r'C:\Windows\Fonts\STZHONGS.TTF').generate(word_space_split)  
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

这里遇到的主要问题是,wordcloud安装有问题,提示缺少Microsoft C++14.0,

按照网上解决方案,是从这个网址直接下载安装:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

但实际中使用QQ浏览器下载时,提示找不到文件,可能被移除。

后来发现是QQ浏览器的问题,使用IE 或者 Chrome其他浏览器都可以正常下载。


总结下:

jupyter notebook 基本使用已经掌握了。

需要留心的是wordcloud下载失败的问题。

不要使用QQ浏览器。




 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值