一、微信好友分析
步骤一:
需要下载wxpy库、openpyxl库和pandas库
步骤二:
读取微信好友信息,并存为excel文件
from wxpy import * import openpyxl import pandas as pd
def shuju(): bot=Bot(cache_path=True) friend_all=bot.friends() lis=[] for a_friend in friend_all: RemarkName=a_friend.raw.get('RemarkName',None) UserName=a_friend.raw.get('UserName',None) NickName=a_friend.raw.get('NickName',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=[RemarkName,UserName,NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag] lis.append(list_0) return lis
def save(u): name=["RemarkName","UserName","NickName","Sex","City","Province","Signature","HeadImgUrl","HeadImgFlag"] test=pd.DataFrame(columns=name,data=u) test.to_excel('D:/pa.xlsx',encoding="gbk")
def main(): u=shuju() save(u) main() |
文件部分内容如图:
步骤三:
统计微信人数、省市分布
from wxpy import * bot=Bot(cache_path=True) allfriend=bot.friends() data=allfriend.stats_text(total=True,sex=True,top_provinces=30,top_cities=50) print(data) |
结果如下
panq 共有 233 位微信好友
男性: 89 (38.2%) 女性: 124 (53.2%)
TOP 30 省份 广东: 137 (58.80%) Dubai: 2 (0.86%) 内蒙古: 2 (0.86%) 北京: 2 (0.86%) 山西: 1 (0.43%) Arnsberg: 1 (0.43%) Kildare: 1 (0.43%) 四川: 1 (0.43%) Miyazaki-ken: 1 (0.43%) Concordia: 1 (0.43%) 安徽: 1 (0.43%) Dublin: 1 (0.43%) Hamburg: 1 (0.43%) Kyoto-fu: 1 (0.43%) Kowloon City: 1 (0.43%) 香港: 1 (0.43%) 海南: 1 (0.43%) Ansbach: 1 (0.43%) Dubayy: 1 (0.43%) Marseille: 1 (0.43%) 福建: 1 (0.43%) Texas: 1 (0.43%) Berlin: 1 (0.43%) Lille: 1 (0.43%) Nuremberg: 1 (0.43%) Victoria: 1 (0.43%) Paris: 1 (0.43%) Saitama-ken: 1 (0.43%) St. Peterburg: 1 (0.43%) 湖北: 1 (0.43%)
TOP 50 城市 肇庆: 63 (27.04%) 广州: 41 (17.60%) 揭阳: 6 (2.58%) 汕头: 5 (2.15%) 佛山: 4 (1.72%) 深圳: 3 (1.29%) 惠州: 2 (0.86%) 中山: 2 (0.86%) 阳江: 2 (0.86%) 茂名: 2 (0.86%) 太原: 1 (0.43%) 成都: 1 (0.43%) 东莞: 1 (0.43%) Miyazaki-shi: 1 (0.43%) 汕尾: 1 (0.43%) 芜湖: 1 (0.43%) Kyoto: 1 (0.43%) 临高: 1 (0.43%) 梅州: 1 (0.43%) 韶关: 1 (0.43%) 厦门: 1 (0.43%) Houston: 1 (0.43%) 珠海: 1 (0.43%) 呼伦贝尔: 1 (0.43%) 朝阳: 1 (0.43%) Melbourne: 1 (0.43%) Kasukabe-shi: 1 (0.43%) 黄冈: 1 (0.43%) 河源: 1 (0.43%) Perth: 1 (0.43%) 东城: 1 (0.43%) 赤峰: 1 (0.43%) 湛江: 1 (0.43%) |
步骤四:
将好友的地区分布和好友签名特点做成词云
需要下载wordcloud库、matplotlib库、pandas库
好友签名词云
import pandas as pd import matplotlib.pyplot as plt from pandas import DataFrame from pandas import read_excel from wordcloud import WordCloud df=read_excel('D:/pa.xlsx') word_list=df['Signature'].fillna("0").tolist() new_text=' '.join(word_list) wordcloud=WordCloud(font_path='simhei.ttf',background_color="pink").generate(new_text) plt.imshow(wordcloud) plt.axis("off") plt.show() |
结果如图
地区词云
代码差不多,只是将Signature改为City
import pandas as pd import matplotlib.pyplot as plt from pandas import DataFrame from pandas import read_excel from wordcloud import WordCloud df=read_excel('D:/pa.xlsx') word_list=df['City'].fillna("0").tolist() new_text=' '.join(word_list) wordcloud=WordCloud(font_path='simhei.ttf',background_color="pink").generate(new_text) plt.imshow(wordcloud) plt.axis("off") plt.show() |
结果如图
二、微信机器人
使用的库:itchat,requests
代码
# -*- coding: utf-8 -*- """ Created on Mon Jun 3 19:36:07 2019
@author: history """
#-*- coding:utf-8 -*- import itchat import requests
def get_response(msg): apiurl = 'http://i.itpk.cn/api.php' # //moli机器人的网址 data={ "question": msg, #//获取到聊天的文本信息 "api_key": "9ddf52cacd0ef429d1c63bf411b9bed6", "api_secret": "n4gxkdyckd7p" }
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() #//启动聊天机器人 |
看一下效果吧
哇,真的好好玩啊,哈哈哈哈,真会骂人。。。