第一个微信小项目

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

 

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

上一篇:c – 应用非限定名称查找而不是依赖于参数的名称查找


下一篇:第一个微信小项目