码迷,mamicode.com
首页 > 微信 > 详细

第一个微信小项目

时间:2019-06-09 09:36:57      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:信号   com   内容   基础   统计   取数据   span   flag   weixin   

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()

 

运行结果就不在这里显示了,有兴趣的小可爱去试试吧!给生活加点乐趣。

第一个微信小项目

标签:信号   com   内容   基础   统计   取数据   span   flag   weixin   

原文地址:https://www.cnblogs.com/psl1234/p/10982808.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!