1. 程式人生 > >用python玩微信(聊天機器人,好友資訊統計)

用python玩微信(聊天機器人,好友資訊統計)

1.用 Python 實現微信好友性別及位置資訊統計

這裡使用的python3+wxpy庫+Anaconda(Spyder)開發。如果你想對wxpy有更深的瞭解請檢視:wxpy: 用 Python 玩微信

# -*- coding: utf-8 -*-
"""
微信好友性別及位置資訊
"""

#匯入模組
from wxpy import Bot

'''Q
微信機器人登入有3種模式,
(1)極簡模式:robot = Bot()
(2)終端模式:robot = Bot(console_qr=True)
(3)快取模式(可保持登入狀態):robot = Bot(cache_path=True)
'''
#初始化機器人,選擇快取模式(掃碼)登入 robot = Bot(cache_path=True) #獲取好友資訊 robot.chats() #robot.mps()#獲取微信公眾號資訊 #獲取好友的統計資訊 Friends = robot.friends() print(Friends.stats_text())

效果圖(來自筆主盆友圈):
位置資訊

2.用 Python 實現聊天機器人

這裡使用的python3+wxpy庫+Anaconda(Spyder)開發。需要提前去圖靈官網建立一個屬於自己的機器人然後得到apikey。

  • 使用圖靈機器人自動與指定好友聊天

讓室友幫忙測試發現傳送表情傳送文字還能迴應,但是傳送圖片可能不會回覆,猜應該是我們申請的圖靈機器人是最初級的沒有加圖片識別功能。

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 13 19:09:05 2018

@author: Snailclimb
@description使用圖靈機器人自動與指定好友聊天
"""

from wxpy import Bot,Tuling,embed,ensure_one
bot = Bot()
my_friend = ensure_one(bot.search('鄭凱'))  #想和機器人聊天的好友的備註
tuling = Tuling(api_key='你申請的apikey') @bot.register(my_friend) # 使用圖靈機器人自動與指定好友聊天 def reply_my_friend(msg): tuling.do_reply(msg) embed()
  • 使用圖靈機器人群聊
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 13 18:55:04 2018

@author: Administrator
"""

from wxpy import Bot,Tuling,embed
bot = Bot(cache_path=True)
my_group = bot.groups().search('群聊名稱')[0]  # 記得把名字改成想用機器人的群
tuling = Tuling(api_key='你申請的apikey')  # 一定要新增,不然實現不了
@bot.register(my_group, except_self=False)  # 使用圖靈機器人自動在指定群聊天
def reply_my_friend(msg):
    print(tuling.do_reply(msg))
embed()

3.用 Python分析朋友圈好友性別分佈(圖示展示)

這裡沒有使用wxpy而是換成了Itchat操作微信,itchat只需要2行程式碼就可以登入微信。如果你想詳細瞭解itchat,請檢視:
itchat入門進階教程
itchat github專案地址
另外就是需要用到python的一個畫圖功能非常強大的第三方庫:matplotlib
如果你想對matplotlib有更深的瞭解請檢視我的博文:Python第三方庫matplotlib(詞雲)入門與進階

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 13 17:09:26 2018

@author: Snalclimb
@description 微信好友性別比例
"""

import itchat
import matplotlib.pyplot as plt
from collections import Counter
itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)
sexs = list(map(lambda x: x['Sex'], friends[1:]))
counts = list(map(lambda x: x[1], Counter(sexs).items()))
labels = ['Male','FeMale',   'Unknown']
colors = ['red', 'yellowgreen', 'lightskyblue']
plt.figure(figsize=(8, 5), dpi=80)
plt.axes(aspect=1)
plt.pie(counts,  # 性別統計結果
        labels=labels,  # 性別展示標籤
        colors=colors,  # 餅圖區域配色
        labeldistance=1.1,  # 標籤距離圓點距離
        autopct='%3.1f%%',  # 餅圖區域文字格式
        shadow=False,  # 餅圖是否顯示陰影
        startangle=90,  # 餅圖起始角度
        pctdistance=0.6  # 餅圖區域文字距離圓點距離
)
plt.legend(loc='upper right',)
plt.title('%s的微信好友性別組成' % friends[0]['NickName'])
plt.show()

效果圖(來自筆主盆友圈):
盆友圈性別分佈

4.用 Python分析朋友圈好友的簽名

需要用到的第三方庫:
numpy:本例結合wordcloud使用
jieba對中文驚進行分詞
PIL: 對影象進行處理(本例與wordcloud結合使用)
snowlp對文字資訊進行情感判斷
wordcloud生成詞雲
matplotlib:繪製2D圖形

# -*- coding: utf-8 -*-
"""
朋友圈朋友簽名的詞雲生成以及
簽名情感分析
"""
import re,jieba,itchat
import jieba.analyse
import numpy as np
from PIL import Image
from snownlp import SnowNLP
from wordcloud import WordCloud
import matplotlib.pyplot as plt
itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)
def analyseSignature(friends):
    signatures = ''
    emotions = []
    for friend in friends:
        signature = friend['Signature']
        if(signature != None):
            signature = signature.strip().replace('span', '').replace('class', '').replace('emoji', '')
            signature = re.sub(r'1f(\d.+)','',signature)
            if(len(signature)>0):
                nlp = SnowNLP(signature)
                emotions.append(nlp.sentiments)
                signatures += ' '.join(jieba.analyse.extract_tags(signature,5))
    with open('signatures.txt','wt',encoding='utf-8') as file:
         file.write(signatures)

    # 朋友圈朋友簽名的詞雲相關屬性設定
    back_coloring = np.array(Image.open('alice_color.png'))
    wordcloud = WordCloud(
        font_path='simfang.ttf',
        background_color="white",
        max_words=1200,
        mask=back_coloring, 
        max_font_size=75,
        random_state=45,
        width=1250, 
        height=1000, 
        margin=15
    )

    #生成朋友圈朋友簽名的詞雲
    wordcloud.generate(signatures)
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
    wordcloud.to_file('signatures.jpg')#儲存到本地檔案

    # Signature Emotional Judgment
    count_good = len(list(filter(lambda x:x>0.66,emotions)))#正面積極
    count_normal = len(list(filter(lambda x:x>=0.33 and x<=0.66,emotions)))#中性
    count_bad = len(list(filter(lambda x:x<0.33,emotions)))#負面消極
    labels = [u'負面消極',u'中性',u'正面積極']
    values = (count_bad,count_normal,count_good)
    plt.rcParams['font.sans-serif'] = ['simHei'] 
    plt.rcParams['axes.unicode_minus'] = False
    plt.xlabel(u'情感判斷')#x軸
    plt.ylabel(u'頻數')#y軸
    plt.xticks(range(3),labels)
    plt.legend(loc='upper right',)
    plt.bar(range(3), values, color = 'rgb')
    plt.title(u'%s的微信好友簽名信息情感分析' % friends[0]['NickName'])
    plt.show()
analyseSignature(friends)

效果圖(來自筆主盆友圈):
簽名詞雲

情感分析

如果你覺得博主的文章不錯,歡迎轉發點贊。你能從中學到知識就是我最大的幸運。
歡迎關注我的微信公眾號:“Java面試通關手冊”(分享各種Java學習資源,面試題,以及企業級Java實戰專案回覆關鍵字免費領取):
微信公眾號

相關推薦

python聊天機器人好友資訊統計

1.用 Python 實現微信好友性別及位置資訊統計 這裡使用的python3+wxpy庫+Anaconda(Spyder)開發。如果你想對wxpy有更深的瞭解請檢視:wxpy: 用 Python 玩微信 # -*- coding: utf-8

Python非常詳細

tree dir colors 位置 echarts 拼接 spl 表示 開源項目 代碼放在這裏:wzyonggege/python-wechat-itchat 詞雲那裏可以換成小黃人圖片 -----------------------------------------

Python 機器人陪你嘮嗑

此文首發於公眾號「Python知識圈」,點選這裡檢視。  “   閱讀文字大概需要 5.2 分鐘 之前給大家分享了怎麼用 itchat 庫製作微信朋友性別統計圖,今天給大家介紹一個更強大的庫:wxpy 庫。 wxpy 在 itchat 的基礎上,通過大量介面

python跳一跳(win10+安卓)

pos 地址 前言 class 包安裝 align fig 嘗試 usb 一、前言 一場跨年的寒風席卷了整個北方,把我們帶到了雪花爛漫的季節;一場“跳一跳”的風波也席卷了我們年輕人,好友們從此展開了如火如荼的較量。由此我們如何才能輕松戰勝好友呢?這背後少不了我

python跳一跳

用python玩微信跳一跳 專案地址 https://github.com/ydlan/wechat_jump 開源是個好東西,如果只關心功能的實現,我們大可不必在程式碼上糾結。 專案工具 Python ADB 安卓手機 安裝部署 Python 3.6

python配合API接口將個人號變為聊天機器人

repl ltr 出現問題 微信 request exce ret 鏈接 content 操作系統:Ubuntu16.04   首先我們先安裝itchat: 這裏我之前安裝過了,先在又安裝了一邊 使用 python3 -c "import itchat" 檢查是否安裝成功

python進行公眾號開發僅測試學習

python 微信公眾號 api開發今天看到篇教程,是用python開發微信公眾號的,覺得有意思,就敲代碼實現了一下,成功後更覺得好玩,故記錄,方便開發深入時使用。 基礎背景介紹: 首先得有個人微信號(沒有自行註冊),為方便測試學習; 其次,還要註冊微信公眾號,微信公眾號不止一種,是分多種的,具體詳情見官方

python自制機器人定時傳送天氣預報

開發十年,就只剩下這套架構體系了! >>>   

當你想python公眾號發信息...

python 微信公眾號 群發信息 微信現在是人人必備的APP,所以它是一個比電子郵箱更加隨身的告警手段,這篇文章就是講解如何申請微信企業號,搭配python腳本來發送信息。讓你能更加先進的實時監(裝)控(逼)。首先,我們先登陸https://work.weixin.qq.com/ ,選擇“企業註

【itchat】Python玩耍

說了 chatroom mage 等於 gis 表情 __main__ rec register 【itchat】   itchat是個基於網頁版微信的python微信API。功能目前做到基本可以滿足正常的消息收發,信息的獲取等等。不過對於紅包之類網頁版微信不支持的功能,

Python炸金花搭建的距離

-s 會有 包含 一個個 bound loop post 估計 路徑 幾天前,一個叫微信炸金花搭建( h5.super-mans.com Q:2012036426)微信炸金花搭建。他花了一些時間研究,但是沒有找到解決辦法。 我很能體會 Cameron 的感受。幾年前我做過一

Python編寫小遊戲“跳一跳”的執行指令碼

前言 更新了微信後發現了一款小遊戲跳一跳,但是玩了一下午最高才達到200,每次差點破紀錄後總是手抖就掛掉了,氣的想要砸手機。。閒來無事刷微博的時候正好看到有人分析如何編寫指令碼自動運行遊戲破了3000多分,細看後覺得原理並不複雜,就索性花了一個晚上,參考大神的實現方法,在他的基礎上刪減了一

Python好友進行簡單統計分析獲取好友的基本資訊

早些日子有人問我我的微信裡面有一共多少朋友,我就隨後拉倒了通訊錄最下面就找到了微信一共有多少位好友。然後他又問我,這裡面你認識多少人?這一句話問的我很無語。一千多個好友我真的不知道認識的人有多少。他還緊追著不放了,你知道你微信朋友的男女比例嘛?你知道你微信朋友大部分來自什麼地方嗎? 不知道

python公眾號發訊息

現在通過發微信公眾號資訊來做訊息通知和告警已經很普遍了。最常見的就是運維通過zabbix呼叫shell指令碼給微信發訊息,起到告警的作用。當要傳送的資訊較多,而且希望按照指定格式顯示的好看一點的時候,shell處理起來,個人感覺不太方便。於是我用python重寫

10分鐘教你Python實現自動回覆

01 前言&&效果展示 相信大家都有忙碌的時候,不可能一直守在微信上及時回覆訊息。但微信又不能像QQ一樣設定自動回覆。無妨,今天,我們就來用Python實現微信的自動回覆功能吧,並且把接收到的訊息統一發送到檔案助手裡面,方便統一檢視。 效果如下: 02 環境準備 Python版本:3.6

教你Python製作好友背景牆

目錄: 0 引言 1 環境 2 程式碼實現 3 後記 0 引言 前段時間,微信朋友圈開始出現了一種晒照片新形式,微信好友牆,即在一張大圖片中展示出自己的所有微信好友的頭像。 效果如下圖,出於隱私考慮,這裡作了模糊處理。 是不是很炫,而且這還是獨一無二的,畢竟每個人的微信好友是不一樣的。本文就教大家用Pyt

Android逆向之旅---靜態方式破解獲取聊天記錄和通訊錄資訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Python+ITchart實現中男女比例城市分佈統計並可視化顯示

直接上程式碼:   import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo import shutil as sh # 根據index列印朋友的資訊 def print_I

JAVA支付寶和APP支付提現退款

公共引數圖表:       介面需要引數通知方式支付寶APP支付應用公鑰,應用私鑰非同步支付寶APP提現應用公鑰,應用私鑰,支付寶公鑰同步支付寶APP退款應用公鑰,應用私鑰,支付寶公鑰同步微信APP支付APPID,商戶號,api_key支付金鑰非同步微信APP提現APPID,

Python開始機器學習8:SVM支援向量機

SVM支援向量機是建立於統計學習理論上的一種分類演算法,適合與處理具備高維特徵的資料集。SVM演算法的數學原理相對比較複雜,好在由於SVM演算法的研究與應用如此火爆,CSDN部落格裡也有大量的好文章對此進行分析,下面給出幾個本人認為講解的相當不錯的:支援向量機通俗導論(理解S