zoukankan      html  css  js  c++  java
  • 利用python实现微信小项目

    一、好友地域词云

    我们的好友都来自五湖四海,我们可以利用python的强大的数据库来实现对好友地域的统计

    工具:wxpy库,wordcloud库,matplotlib库,openpyxl库,pandas库,numpy库。

    1、首先实现对微信的登陆与获取好友数据操作

          代码:

      

    #引入微信登陆接口
    from wxpy import *
    
    #获取登录二维码
    bot = Bot(cache_path = True)
    
    #获取微信朋友的基本数据
    friend_all = bot.friends()
    
    #建立一个二维列表,存储基本好友信息
    lis = [['NickName','Sex','City','Province','Signature','HeadImgUrl','HeadImgFlag']]
    #把好有特征数据保存为列表
    for a_friend in friend_all:
        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 = [NickName, Sex, City, Province, Signature, HeadImgUrl, HeadImgFlag]
        lis.append(list_0)

          运行结果:

      此时弹出了二维码,扫码登陆即可自动获取好友数据

    2、将好友数据保存为xlsx文件

         方便worldcloud库进行处理

       代码:

    #把列表转换为 xlsx 表格
    def list_to_xlsx(filename, list):
        
        import openpyxl
        wb = openpyxl.Workbook()
        sheet = wb.active
        sheet.title = 'Friends'
        file_name = filename + '.xlsx'
        for i in range(0, len(list)):
            for j in range(0, len(list[i])):
                sheet.cell(row = i+1, column = j+1, value = str(list[i][j]))
                
        wb.save(file_name)
        print("读写数据成功")
    
    #把列表生成表格
    list_to_xlsx('wechat_friend', lis)

            运行结果:

      

      生成了一个xlsx文件

    3、生成词云

          利用worldcloud库生成一个词云

      代码:

    from wordcloud import WordCloud
    import matplotlib.pyplot as plt
    import pandas as pd
    from pandas import read_excel
    import numpy as np
    
    df = read_excel('wechat_friend.xlsx')
    
    #使用 WordCloud 生成词云
    word_list = df['City'].fillna('0').tolist()
    new_text = ' '.join(word_list)
    wordcloud = WordCloud(font_path='msyh.ttc', background_color = 'white').generate(new_text)
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
    
    
    #使用 pyecharts 生成词云
    from pyecharts import WordCloud
    
    city_list = df['City'].fillna('').tolist()
    count_city = pd.value_counts(city_list)
    name = count_city.index.tolist()
    value = count_city.tolist()
    
    wordcloud = WordCloud(width=1300,height=620)
    wordcloud.add("",name,value,word_size_range=[20,100])
    #wordcloud.show_config()
    #wordcloud.render(r'D:wc.html')
    wordcloud.render('wordcloud.html')
    
    
    #将好友展示在地图上 
    from pyecharts import Map
    
    province

          运行结果:

      

    二、创建微信机器人

    工具:requests模块,itchat模块

    然后我们去茉莉机器人上申请api接口http://www.itpk.cn

     代码:

    #-*- 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()                       //启动聊天机器人

    运行登陆即可

  • 相关阅读:
    skynet源码分析之socketchannel
    skynet源码分析之master/salve集群模式
    skynet源码分析之网络层——网关服务器
    Android反编译基础(apktoos)--广工图书馆APK
    Android-Native-Server 启动和注册详细分析
    Android NDK r8 windows环境搭建
    Android 4.1.1源码编译
    Android Binder------ServiceManager启动分析
    更改系统盘符后DFS无法复制故障处理
    Centos6.9部署Gitlab-11.9.8并汉化
  • 原文地址:https://www.cnblogs.com/shinawear/p/10996442.html
Copyright © 2011-2022 走看看