[Python微信開發] 一.itchat入門知識及微信自動回覆、微信簽名詞雲分析
最近準備學習微信小程式開發,偶然間看到了python與微信互動的介面itchat,簡單學習了下,感覺還挺有意思的,故寫了篇基礎文章供大家學習。itchat是一個開源的微信個人號介面,使用python呼叫微信從未如此簡單。使用不到三十行的程式碼,你就可以完成一個能夠處理所有資訊的微信機器人。
官網文件:http://itchat.readthedocs.io/zh/latest/
本文主要講解itchat擴充套件包的入門基礎知識,包括:
1.itchat安裝及入門知識
2.微信好友性別分析
3.微信自動回覆及傳送圖片
4.獲取微信簽名並進行詞雲分析
基礎性文章,希望對您有所幫助,後面將結合輿情分析、朋友圈等介面進行更一步的講解。如果文章中存在錯誤或不足之處,還請海涵~
參考文章:
https://zhuanlan.zhihu.com/p/26514576?group_id=839173221667446784
https://www.cnblogs.com/jmmchina/p/6692149.html
http://blog.csdn.net/qinyuanpei/article/details/79360703
一. itchat安裝及入門知識
安裝通過 pip install itchat 命令實現,如下圖所示:
安裝成功之後通過 import itchat 進行匯入。
下面給出我們第一個簡單的程式碼:
# -*- coding:utf-8 -*-
import itchat
# 登入
itchat.login()
# 傳送訊息
itchat.send(u'你好', 'filehelper')
首先呼叫itchat.login()函式登入微信,再通過itchat.send(u'你好', 'filehelper')函式傳送資訊給微信的“檔案傳輸助手(filehelper)”。注意,執行程式碼過程中會彈出一張二維碼圖片,我們通過手機掃一掃登入後才能獲取我們微信及好友的資訊。
輸出結果如下圖所示,可以看到給自己傳送了一個“你好”。
下面給出另一段程式碼:
#-*- coding:utf-8 -*-
import itchat
# 先登入
itchat.login()
# 獲取好友列表
friends = itchat.get_friends(update=True)[0:]
print u"暱稱", u"性別", u"省份", u"城市"
for i in friends[0:]:
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表示女性;省份和城市可以不設定。
二. 微信好友性別分析
下面直接給出對微信好友性別分析繪圖的程式碼:
#-*- coding:utf-8 -*-
import itchat
#獲取好友列表
itchat.login() #登入
friends = itchat.get_friends(update=True)[0:]
#初始化計數器
male = 0
female = 0
other = 0
#1男性,2女性,3未設定性別
for i in friends[1:]: #列表裡第一位是自己,所以從"自己"之後開始計算
sex = i["Sex"]
if sex == 1:
male += 1
elif sex == 2:
female += 1
else:
other += 1
#計算比例
total = len(friends[1:])
print u"男性人數:", male
print u"女性人數:", female
print u"總人數:", total
a = (float(male) / total * 100)
b = (float(female) / total * 100)
c = (float(other) / total * 100)
print u"男性朋友:%.2f%%" % a
print u"女性朋友:%.2f%%" % b
print u"其他朋友:%.2f%%" % c
#繪製圖形
import matplotlib.pyplot as plt
labels = ['Male','Female','Unkown']
colors = ['red','yellowgreen','lightskyblue']
counts = [a, b, c]
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.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.title(u'微信好友性別組成')
plt.show()
這段程式碼獲取好友列表後,從第二個好友開始統計性別,即friends[1:],因為第一個是作者本人,然後通過迴圈計算未設定性別0、男性1和女性2,最後通過Matplotlib庫繪製餅狀圖。如下所示,發現作者男性朋友66.91%,女性朋友26.98%。
三. 微信自動回覆及傳送圖片
微信傳送資訊呼叫send()函式實現,下面是傳送文字資訊、檔案、圖片和視訊。
# coding-utf-8
import itchat
itchat.login()
itchat.send("Hello World!", 'filehelper')
itchat.send("@fil@%s" % 'test.text')
itchat.send("@img@%s" % 'img.jpg', 'filehelper')
itchat.send("@vid@%s" % 'test.mkv')
比如給我的微信檔案助手發了個“Hello World”和一張圖片。
如果想傳送資訊給指定好友,則核心程式碼如下:
#想給誰發資訊,先查詢到這個朋友
users = itchat.search_friends(name=u'通訊錄備註名')
#找到UserName
userName = users[0]['UserName']
#然後給他發訊息
itchat.send('hello',toUserName = userName)
下面這部分程式碼是自動回覆微信資訊,同時在檔案傳輸助手也同步傳送資訊。
#coding=utf8
import itchat
import time
# 自動回覆
# 封裝好的裝飾器,當接收到的訊息是Text,即文字訊息
@itchat.msg_register('Text')
def text_reply(msg):
if not msg['FromUserName'] == myUserName: # 當訊息不是由自己發出的時候
# 傳送一條提示給檔案助手
itchat.send_msg(u"[%s]收到好友@%s 的資訊:%s\n" %
(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),
msg['User']['NickName'],
msg['Text']), 'filehelper')
# 回覆給好友
return u'[自動回覆]您好,我現在有事不在,一會再和您聯絡。\n已經收到您的的資訊:%s\n' % (msg['Text'])
if __name__ == '__main__':
itchat.auto_login()
myUserName = itchat.get_friends(update=True)[0]["UserName"]
itchat.run()
執行結果如下圖所示:四. 獲取微信簽名並進行詞雲分析
最後給出獲取微信好友的簽名的詞雲分析,其friends[i]["Signature"]獲取簽名,最後呼叫jieba分詞最後進行WordCloud詞雲分析。
# coding:utf-8
import itchat
import re
itchat.login()
friends = itchat.get_friends(update=True)[0:]
tList = []
for i in friends:
signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
rep = re.compile("1f\d.+")
signature = rep.sub("", signature)
tList.append(signature)
# 拼接字串
text = "".join(tList)
# jieba分詞
import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)
# wordcloud詞雲
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import PIL.Image as Image
from scipy.misc import imread
from os import path
# 讀取mask/color圖片
d = path.dirname(__file__)
nana_coloring = imread(path.join(d, "test.png"))
# 對分詞後的文字生成詞雲
my_wordcloud = WordCloud(background_color = 'white', # 設定背景顏色
mask = nana_coloring, # 設定背景圖片
max_words = 2000, # 設定最大現實的字數
stopwords = STOPWORDS, # 設定停用詞
max_font_size = 50, # 設定字型最大值
random_state = 30, # 設定有多少種隨機生成狀態,即有多少種配色方案
)
# generate word cloud
my_wordcloud.generate(wl_space_split)
# create coloring from image
image_colors = ImageColorGenerator(nana_coloring)
# recolor wordcloud and show
my_wordcloud.recolor(color_func=image_colors)
plt.imshow(my_wordcloud) # 顯示詞雲圖
plt.axis("off") # 是否顯示x軸、y軸下標
plt.show()
輸出結果如下圖所示,注意這裡作者設定了圖片罩,生成的圖形和那個類似,發現“個人”、“世界”、“生活”、“夢想”等關鍵詞挺多的。
(By:Eastmount 2018-03-19 晚上11點 http://blog.csdn.net/eastmount/ )
相關文章
- PHP微信開發——自動回覆PHP
- Python微信操控(itchat)Python
- Python | 微信自動回覆祝福語Python
- Python 超簡單玩轉微信自動回覆Python
- 微信公眾號自動回覆_JavaJava
- python itchat 爬取微信好友資訊Python
- 微信自動連發
- 簡短好聽的微信個性簽名大全 微信簽名一句話小清新
- 《微信小程式開發 入門與實踐》知識點整理微信小程式
- Python自動掃描出微信不是好友名單Python
- 微信APP支付-簽名問題APP
- 入門微信小程式 (一)微信小程式
- 微信訂閱號實現AI自動回覆AI
- 微信公眾號自動回覆新增檔案
- PHP微信開發之模板訊息回覆PHP
- 使用 Python 來自動回微信Python
- 在python中使用itchat傳送微信訊息Python
- 微信開發之微信域名防封介面
- 68句唯美簡短有內涵微信個性簽名大全 微信簽名一句話內涵
- 微信公眾平臺開發入門
- 微信公眾號之自動回覆文字 -- PHPPHP
- .Net微信網頁開發之使用微信JS-SDK呼叫微信掃一掃功能網頁JS
- 微信開發:清除微信瀏覽器快取瀏覽器快取
- 微信開發1 (接入微信)
- 微信小程式雲開發6微信小程式
- 開發微信小程式需要了解哪些知識?微信小程式
- 微信小程式入門教程微信小程式
- 微信開發-微信網頁開發-授權多次回撥網頁
- 微信開發超市全反系統,微信支付刷卡支付,微信介面簡單配置!
- 微信登入
- 微信關注自動回覆功能 (更新 : 同時回覆兩條資訊)
- iOS逆向 應用重簽名+微信重簽名實戰iOS
- 微信開發系列之一 - 微信公眾號開發的開發環境搭建開發環境
- 微信iPad協議-雲控系統-微商工具-雲發單-微信機器人iPad協議機器人
- 利用itchat 10行python程式碼實現微信轟炸Python
- .Net微信網頁開發之使用微信JS-SDK自定義微信分享內容網頁JS
- Python + Appium 自動化操作微信入門看這一篇就夠了PythonAPP
- Python教你全自動搶微信紅包Python