1. 程式人生 > >[Python微信開發] 一.itchat入門知識及微信自動回覆、微信簽名詞雲分析

[Python微信開發] 一.itchat入門知識及微信自動回覆、微信簽名詞雲分析

轉自: https://blog.csdn.net/Eastmount/article/details/79618039

最近準備學習微信小程式開發,偶然間看到了python與微信互動的介面itchat,簡單學習了下,感覺還挺有意思的,故寫了篇基礎文章供大家學習。itchat是一個開源的微信個人號介面,使用python呼叫微信從未如此簡單。使用不到三十行的程式碼,你就可以完成一個能夠處理所有資訊的微信機器人。

本文主要講解itchat擴充套件包的入門基礎知識,包括:
1.itchat安裝及入門知識
2.微信好友性別分析
3.微信自動回覆及傳送圖片
4.獲取微信簽名並進行詞雲分析

一. itchat安裝及入門知識


安裝通過 pip install itchat 命令實現,如下圖所示:
 


安裝成功之後通過 import itchat 進行匯入。


下面給出我們第一個簡單的程式碼:

  1. # -*- coding:utf-8 -*-

  2. import itchat

  3. # 登入

  4. itchat.login()

  5. # 傳送訊息

  6. itchat.send(u'你好', 'filehelper')

首先呼叫itchat.login()函式登入微信,再通過itchat.send(u'你好', 'filehelper')函式傳送資訊給微信的“檔案傳輸助手(filehelper)”。注意,執行程式碼過程中會彈出一張二維碼圖片,我們通過手機掃一掃登入後才能獲取我們微信及好友的資訊。

  

輸出結果如下圖所示,可以看到給自己傳送了一個“你好”。
 


下面給出另一段程式碼:

  1. #-*- coding:utf-8 -*-

  2. import itchat

  3. # 先登入

  4. itchat.login()

  5. # 獲取好友列表

  6. friends = itchat.get_friends(update=True)[0:]

  7. print u"暱稱", u"性別", u"省份", u"城市"

  8. for i in friends[0:]:

  9. print i["NickName"], i["Sex"], i["Province"], i["City"]

這裡最重要的程式碼是獲取好友列表,程式碼如下:
    friends = itchat.get_friends(update=True)[0:] 

再通過["NickName"]獲取暱稱、["Sex"]獲取性別、["Province"]獲取省份、["City"]獲取城市。返回的結果如下所示,其中第一個friends[0]是作者本人,然後性別0表示未填寫、1表示男性、2表示女性;省份和城市可以不設定。
 

二. 微信好友性別分析


下面直接給出對微信好友性別分析繪圖的程式碼:

  1. #-*- coding:utf-8 -*-

  2. import itchat

  3. #獲取好友列表

  4. itchat.login() #登入

  5. friends = itchat.get_friends(update=True)[0:]

  6. #初始化計數器

  7. male = 0

  8. female = 0

  9. other = 0

  10. #1男性,2女性,3未設定性別

  11. for i in friends[1:]: #列表裡第一位是自己,所以從"自己"之後開始計算

  12. sex = i["Sex"]

  13. if sex == 1:

  14. male += 1

  15. elif sex == 2:

  16. female += 1

  17. else:

  18. other += 1

  19. #計算比例

  20. total = len(friends[1:])

  21. print u"男性人數:", male

  22. print u"女性人數:", female

  23. print u"總人數:", total

  24. a = (float(male) / total * 100)

  25. b = (float(female) / total * 100)

  26. c = (float(other) / total * 100)

  27. print u"男性朋友:%.2f%%" % a

  28. print u"女性朋友:%.2f%%" % b

  29. print u"其他朋友:%.2f%%" % c

  30. #繪製圖形

  31. import matplotlib.pyplot as plt

  32. labels = ['Male','Female','Unkown']

  33. colors = ['red','yellowgreen','lightskyblue']

  34. counts = [a, b, c]

  35. plt.figure(figsize=(8,5), dpi=80)

  36. plt.axes(aspect=1)

  37. plt.pie(counts, #性別統計結果

  38. labels=labels, #性別展示標籤

  39. colors=colors, #餅圖區域配色

  40. labeldistance = 1.1, #標籤距離圓點距離

  41. autopct = '%3.1f%%', #餅圖區域文字格式

  42. shadow = False, #餅圖是否顯示陰影

  43. startangle = 90, #餅圖起始角度

  44. pctdistance = 0.6 #餅圖區域文字距離圓點距離

  45. )

  46. plt.legend(loc='upper right',)

  47. plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤

  48. plt.title(u'微信好友性別組成')

  49. plt.show()

這段程式碼獲取好友列表後,從第二個好友開始統計性別,即friends[1:],因為第一個是作者本人,然後通過迴圈計算未設定性別0、男性1和女性2,最後通過Matplotlib庫繪製餅狀圖。如下所示,發現作者男性朋友66.91%,女性朋友26.98%。
 

三. 微信自動回覆及傳送圖片

微信傳送資訊呼叫send()函式實現,下面是傳送文字資訊、檔案、圖片和視訊。

  1. # coding-utf-8

  2. import itchat

  3. itchat.login()

  4. itchat.send("Hello World!", 'filehelper')

  5. itchat.send("@[email protected]%s" % 'test.text')

  6. itchat.send("@[email protected]%s" % 'img.jpg', 'filehelper')

  7. itchat.send("@[email protected]%s" % 'test.mkv')

比如給我的微信檔案助手發了個“Hello World”和一張圖片。


如果想傳送資訊給指定好友,則核心程式碼如下:

  1. #想給誰發信息,先查詢到這個朋友

  2. users = itchat.search_friends(name=u'通訊錄備註名')

  3. #找到UserName

  4. userName = users[0]['UserName']

  5. #然後給他發訊息

  6. itchat.send('hello',toUserName = userName)


下面這部分程式碼是自動回覆微信資訊,同時在檔案傳輸助手也同步傳送資訊。

  1. #coding=utf8

  2. import itchat

  3. import time

  4. # 自動回覆

  5. # 封裝好的裝飾器,當接收到的訊息是Text,即文字訊息

  6. @itchat.msg_register('Text')

  7. def text_reply(msg):

  8. if not msg['FromUserName'] == myUserName: # 當訊息不是由自己發出的時候

  9. # 傳送一條提示給檔案助手

  10. itchat.send_msg(u"[%s]收到好友@%s 的資訊:%s\n" %

  11. (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),

  12. msg['User']['NickName'],

  13. msg['Text']), 'filehelper')

  14. # 回覆給好友

  15. return u'[自動回覆]您好,我現在有事不在,一會再和您聯絡。\n已經收到您的的資訊:%s\n' % (msg['Text'])

  16. if __name__ == '__main__':

  17. itchat.auto_login()

  18. myUserName = itchat.get_friends(update=True)[0]["UserName"]

  19. itchat.run()

執行結果如下圖所示:

  

四. 獲取微信簽名並進行詞雲分析

最後給出獲取微信好友的簽名的詞雲分析,其friends[i]["Signature"]獲取簽名,最後呼叫jieba分詞最後進行WordCloud詞雲分析。

  1. # coding:utf-8

  2. import itchat

  3. import re

  4. itchat.login()

  5. friends = itchat.get_friends(update=True)[0:]

  6. tList = []

  7. for i in friends:

  8. signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")

  9. rep = re.compile("1f\d.+")

  10. signature = rep.sub("", signature)

  11. tList.append(signature)

  12. # 拼接字串

  13. text = "".join(tList)

  14. # jieba分詞

  15. import jieba

  16. wordlist_jieba = jieba.cut(text, cut_all=True)

  17. wl_space_split = " ".join(wordlist_jieba)

  18. # wordcloud詞雲

  19. import matplotlib.pyplot as plt

  20. from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

  21. import PIL.Image as Image

  22. from scipy.misc import imread

  23. from os import path

  24. # 讀取mask/color圖片

  25. d = path.dirname(__file__)

  26. nana_coloring = imread(path.join(d, "test.png"))

  27. # 對分詞後的文字生成詞雲

  28. my_wordcloud = WordCloud(background_color = 'white', # 設定背景顏色

  29. mask = nana_coloring, # 設定背景圖片

  30. max_words = 2000, # 設定最大現實的字數

  31. stopwords = STOPWORDS, # 設定停用詞

  32. max_font_size = 50, # 設定字型最大值

  33. random_state = 30, # 設定有多少種隨機生成狀態,即有多少種配色方案

  34. )

  35. # generate word cloud

  36. my_wordcloud.generate(wl_space_split)

  37. # create coloring from image

  38. image_colors = ImageColorGenerator(nana_coloring)

  39. # recolor wordcloud and show

  40. my_wordcloud.recolor(color_func=image_colors)

  41. plt.imshow(my_wordcloud) # 顯示詞雲圖

  42. plt.axis("off") # 是否顯示x軸、y軸下標

  43. plt.show()

輸出結果如下圖所示,注意這裡作者設定了圖片罩,生成的圖形和那個類似,發現“個人”、“世界”、“生活”、“夢想”等關鍵詞挺多的。
 

相關推薦

[Python開發] .itchat入門知識自動回覆簽名分析

轉自: https://blog.csdn.net/Eastmount/article/details/79618039 最近準備學習微信小程式開發,偶然間看到了python與微信互動的介面itchat,簡單學習了下,感覺還挺有意思的,故寫了篇基礎文章供大家學習。it

JSP網站開發之HTML入門知識常用標記符 (

        最近發生的事情很多,其中一件很重要的事情就是:學生生涯的結束,教學生涯的開始。我準備下個月寫一篇總結研究生生涯的文章,包括自己放棄網際網路選擇回家教書、找工作經歷、專案和畢業設計的各種感想。很榮幸XB七月初就給了我第一次大學教學的經歷,很享受很珍惜也很感觸。

開發款簡單的百度小程式(由小程式遷移過來)

開發一款簡單的百度小程式(由微信小程式遷移過來) 百度小程式剛出兩個月不久,上個週末閒來無事,看了一下百度小程式的文件,百度下程式的文件跟微信的差不了多少,就是一些api和語法會有一點差別,基本上能寫微信小程式的都能很快學會百度小程式!不過百度小程式的開發者工具真的沒有微信的好。我寫

開發(與自己的後臺互動)

在進入微信開發前,首先我們要將我們的ip對映成url訪問地址,這裡我用的是natapp,感覺還是挺穩定的,只不過對映的地址擱一段時間會被替換掉 接下來進入到微信的公眾號平臺裡面去,如果還沒申請的話可以進行申請,微信的公眾號分為三種:訂閱號,服務號,企業號,

廖雪峰的python筆記()--入門知識

環境:python3.5+ubuntu16.04 1.有關命令列和python的互動模式:     在命令列模式下能執行.py檔案,     [輸入python/python3.5可以進入python的互動模式]     在python互動模式下能執行行程式碼。 2

開發--網頁授權

功能: 主要用於在使用者通過手機端微信訪問第三方H5頁面時獲取使用者的身份資訊(openId,暱稱,頭像,所在地等。。)可用來實現微信登入、微信賬號繫結、使用者身份鑑權等功能。   一、開發前的準備: 1、需要有一個公眾號,拿到AppID和AppSecret; 注意

Ubuntu下clang開發工具簡易入門知識()

首先,需要要選擇好正確的介面(Choosing the Right Interface for Your Application) 基於clang的應用主要三種介面: LibClang: 一套穩定的高級別C介面, 抽象程度高,以cursor為訪問單位(CXCursor

開發伺服器地址(URL)令牌(Token)配置

前期準備工作準備工具:Tomcat伺服器,阿里雲伺服器阿里雲伺服器購買:學生可以使用雲翼計劃購買阿里雲伺服器,平均一個月12塊左右。正常阿里雲購買一個月阿里雲伺服器配置:登陸進入阿里雲伺服器的控制檯,進入"雲伺服器ECS",具體位置如下圖1所示。圖1進入雲伺服器ECS後入圖2

Python實現好友簽名的構建(itchatjiebawordcloud)

最近Python操作微信的文章挺火的,結合前面介紹過的jieba和wordcloud做一個簡單的微信好友簽名的詞雲。 操作微信的庫有很多,現在比較流行的就是itchat,https://github.com/littlecodersh/ItChat 這個庫對

開發配置JSSDK,註入權限驗證,以及invalid signature簽名錯誤解決

工具 沒有 ans dem menus true 發現 bin ces 在微信開發中很多功能都要用到微信JSSDK,關於JSSDK的使用,微信官方的文檔已經比較詳細,一定要仔細去看文檔。 <script src="https://res.wx.qq.com/open

Python 全棧開發 python初識

個數 周期 color 官方 有變 區別 全局 數據 例如 1.Python簡介 python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋

GO-Grpc服務開發 概覽

GO-Grpc微服務開發一 概覽 概覽 專案地址 主要依賴/工具 目錄結構 概覽 專案地址 [email protected]:juelite/micro-srv.git 主要依賴/工具

【程式碼】用Python玩轉,echarts餅圖,WordCloud雲圖,自動回覆訊息,好友地區熱圖

參考用Python玩轉微信(一),做了一些修改 import re import os import time import itchat from echarts import Echart, Legend, Pie import wordcloud from wordcloud im

[開發] - 消息回復事件響應

handler lse jpg right 設定 public 可能 ... set 微信平臺的消息回復,的關鍵字(及)消息回復及關註事件消息響應, 其不同點如圖: 在weixin4j作者的註釋中,提到微信公眾平臺接受消息一共有這麽8類: * <

[開發] - weixin4j獲取網頁授權後的code進而獲取用戶

port -c ota UNC ets ces rip return mage weixin4j封裝好的SnsComponent組件中的方法可以執行該步驟 WeixinUserInfoController : package com.baigehuidi.demo.

GO-Grpc服務開發 服務編寫

服務編寫 1.定義proto檔案 //示例為elc日誌 syntax = "proto3"; //service name is kibana service Kibana { //serv

Python爬蟲筆記()——基礎知識簡單整理

登陸時候的使用者名稱和密碼可以放在http的頭部也可以放在http的body部分。 HTTPS是否可以抓取 由於https運用的加密策略是公開的,所以即使網站使用https加密仍然可以獲得資料,但是類似於微信這樣的app,它自己實現了一套加密演算法,想要抓取資料就變得

跳輔助之JAVA版(最容易理解的演算法)實現原理分析

上幾周更新微信後,進入歡迎介面就提示出讓玩一把微信小遊戲《跳一跳》。一向不愛玩遊戲的我(除了經典QQ飛車、CS外),當時抱著沒興趣的態度簡單看了下,沒有玩。與朋友玩耍時,常聽他們聊起這個小遊戲,偶爾也在網頁和微信公眾號上看見些關於這個小遊戲的一些話題,為了不落伍,我決定繼續

python工具,聊天自動回覆手機遠端控制電腦

功能簡介 微信聊天、傳送檔案 微信忙碌回覆 微信機器人回覆 微信遠端控制電腦 軟體截圖           軟體使用 遠端控制相關指令: #

從安卓手機ROOT提取聊天記錄到利用Python進行分析全過程

剛剛來到了2018年,正值女票生日將近。想想這一年來我倆的聊天記錄也不少(匯出後一看十個月的微信文字聊天記錄將近8萬條 ^-^),於是就有了將我們的聊天記錄匯出來製作成詞雲,或者分析一下她說的最多的一句話是什麼?還打算做個預測模型,輸入一個句子然後讓模型預測下是她說的還是我說的,哈哈,想想還有點小激