1.微信好友数据分析
主要利用网页段微信获取数据,实现个人微信好友数据的获取,其中包括内容为:
(1)爬取好友列表,统计好友人数
(2)好友省市分布以及统计好友签名用词特点
(3)用pyechart图像显示上面数据并成为网页文件
以上任务需要依赖七个库,安装过程为:
安装 wxpy: pip install wxpy
安装 PIL: pip install pillow
安装 pyecharts:pip install pyecharts
安装 Itchat: pip install itchat
安装 Jieba: pip install jieba
安装 Pandas:pip install Pandas
安装 Numpy:pip install Numpy
安装地图数据包:pip install echarts-china-provinces-pypkg
pip install echarts-countries-pypkg
获取微信好友的相关信息:
输入如下代码,登录微信,进行爬取好友信息,有些微信由于各种权限,不能够进行微信网页版的登录
请用户换用领一个微信号进行扫码登录。
from wxpy import * #初始化机器人,选择缓存模式(扫码)登录 bot = Bot(cache_path=True) #获取我的所有微信好友信息 friend_all = bot.friends()
运行后登录代码自动弹出一个二维码页面,用手机进行扫码,进入微信便会有相关的数据输出:
输出结果如上,可知登录成功,接下来进行信息的读取
在此基础上进行查询每位好友的相关信息,显示如下:
好友的基本信息已经得出,现在进行计算好友的个数,输入代码为:
len(friend_all)
本人的结果如下:(不擅长交流的结果,好友数不多,但都是能够交真心的好友)
为了更好地进行数据好友分析,我们把好友的城市、省份、昵称、个性签名等关键数据进行爬取,并存进一个表格里。
lis=[] for a_friend in friend_all: NickName = a_friend.raw.get('NickName',None) #Sex = a_friend.raw.get('Sex',None) Sex ={1:"男",2:"女",0:"其它"}.get(a_friend.raw.get('Sex',None),None) City = a_friend.raw.get('city',None) Province = a_friend.raw.get('Province',None) Signature = a_friend.raw.get('Signature',None) HeadImgUrl = a_friend.raw.get('HeadImgUrl',None) HeadImgFlag = a_friend.raw.get('HeadImgFlag',None) list_0=[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag] lis.append(list_0) def lis2e07(filename,lis): import openpyxl wb = openpyxl.Workbook() sheet = wb.active sheet.title = 'list2excel07' file_name = filename +'.xlsx' for i in range(0, len(lis)): for j in range(0, len(lis[i])): sheet.cell(row=i+1, column=j+1, value=str(lis[i][j])) wb.save(file_name) print("写入数据成功!") lis2e07('weixin2',lis)
输出结果“写入数据成功!”说明数据已导入。
打开excel表格为:
进行对好友的数据进行分析
输入代码:
Friends = bot.friends() data = Friends.stats_text(total=True, sex=True,top_provinces=30, top_cities=500) print(data)
得出男女的比例为:
省份分布为:
城市分布为:
为了进行更明显地看出好友的分布城市,利用词云进行显示。代码为:
df = read_excel('weixin2.xlsx',sheetname='list2excel07') df.tail(5) df['city'].count() df['city'].describe() from wordcloud import WordCloud import matplotlib.pyplot as plt import pandas as pd from pandas import DataFrame word_list= df['city'].fillna('0').tolist() new_text = ' '.join(word_list) wordcloud = WordCloud(font_path='simhei.ttf', background_color="black").generate(new_text) plt.imshow(wordcloud) plt.axis("off") plt.show()
结果为:
本人广东,好友也主要是广东。
现在已把所有的好友分析任务完成了:所有的代码为:
from wxpy import * #初始化机器人,选择缓存模式(扫码)登录 bot = Bot(cache_path=True) #获取我的所有微信好友信息 friend_all = bot.friends() Friends = bot.friends()lis=[] for a_friend in friend_all: NickName = a_friend.raw.get('NickName',None) #Sex = a_friend.raw.get('Sex',None) Sex ={1:"男",2:"女",0:"其它"}.get(a_friend.raw.get('Sex',None),None) City = a_friend.raw.get('city',None) Province = a_friend.raw.get('Province',None) Signature = a_friend.raw.get('Signature',None) HeadImgUrl = a_friend.raw.get('HeadImgUrl',None) HeadImgFlag = a_friend.raw.get('HeadImgFlag',None) list_0=[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag] lis.append(list_0) def lis2e07(filename,lis): import openpyxl wb = openpyxl.Workbook() sheet = wb.active sheet.title = 'list2excel07' file_name = filename +'.xlsx' for i in range(0, len(lis)): for j in range(0, len(lis[i])): sheet.cell(row=i+1, column=j+1, value=str(lis[i][j])) wb.save(file_name) print("写入数据成功!") #lis2e07('weixin2',lis) data = Friends.stats_text(total=True, sex=True,top_provinces=30, top_cities=500) print(data) from pandas import read_excel df = read_excel('weixin2.xlsx',sheetname='list2excel07') df.tail(5) df['city'].count() df['city'].describe() from wordcloud import WordCloud import matplotlib.pyplot as plt import pandas as pd from pandas import DataFrame word_list= df['city'].fillna('0').tolist() new_text = ' '.join(word_list) wordcloud = WordCloud(font_path='simhei.ttf', background_color="black").generate(new_text) plt.imshow(wordcloud) plt.axis("off") plt.show()
2.编辑一个微信聊天机器人
依赖的模板:
(1)requests模板;网络请求
(2)itchat模板itchat是一个开源的微信个人号接口,使用python调用微信
在此前我们要申请注册一个聊天机器人,可以是茉莉机器人也可以是图灵机器人
茉莉机器人申请接口:http://www.itpk.cn/
图灵机器人申请接口:http://www.tuling123.com/
注册过程简单,在此就不多说,按流程就可以注册成功
接着就是获取你注册机器人的Api Key和Api Secret
然后运行如下代码:
import itchat import requests def get_response(msg): apiurl = 'http://i.itpk.cn/api.php' //moli机器人的网址 data={ "question": msg, //获取到聊天的文本信息 "api_key": "dd1afd69656a4c452a47e65a0c547d7a", "api_secret": "q1j85pmg6zy7" } r=requests.post(apiurl,data=data) //构造网络请求 return r.text @itchat.msg_register(itchat.content.TEXT) //好友消息的处理 def print_content(msg): return get_response(msg['Text']) @itchat.msg_register([itchat.content.TEXT], isGroupChat=True) //群消息的处理 def print_content(msg): return get_response(msg['Text']) itchat.auto_login(True) //自动登录 itchat.run()
运行结果就不在这里显示了,有兴趣的小可爱去试试吧!给生活加点乐趣。