前言
開始幾天,我是使用很原始的方法,自己去獲取天氣預報截圖,再手動發送給小姐姐。連續幾天之后我一想:不對呀,我怎么說也是一個程序猿,怎么能用這么 low 的方式呢。
聯想起之前看到的一個開源 python 庫―― wxpy,一個非常強大的微信 api 調用類庫,正好滿足我當前的需要,那話不多說,開干。
任務分解
- 調用微信 api 發送簡單消息
- 獲取當日天氣預報截圖信息
- 設置定時任務
調用微信 api 發送簡單消息
本程序主要是通過 wxpy 庫使用的,參考其官網文檔,我們需要做如下準備工作:
1.Python 環境(本人使用的是 mac 自帶的 python2.7)
2.安裝 wxpy 庫
pip install -U wxpy -i "https://pypi.doubanio.com/simple/"(國內用戶使用豆瓣的源)
復制代碼
獲取聊天對象,發送消息
我們先試著獲取文件傳輸助手,拿它練練手
from wxpy import *# 初始化一個機器人對象bot = Bot()# 獲取文件傳輸助手file_helper = bot.file_helper# 向文件傳輸助手發送消息file_helper.send('Hello')
復制代碼
通過昵稱獲取指定微信好友
# 獲取昵稱為 『志明』,這邊的昵稱指你給的好友備注friend = bot.friends().search('志明')friend.send(u'Hello 志明') #在字符前面加上 u 為了避免編碼轉換的異常,因為存在中文
復制代碼
獲取當日天氣預報截圖信息
國內天氣網的 api 很多,我找了一個簡單易用的天氣查詢網站――中國天氣
我的需求是把網頁中紅框圈起來的內容截取,轉化成圖片,一搜索還真的找個這么一個神器――webkit2jpg,官網地址
webkit2jpg
這是 linux 環境下,能夠把網頁內容轉成圖片的命令行工具,mac 可以直接通過 brew 安裝
brew install webkit2png
復制代碼
拿 google 主頁練練手,在命令行輸入如下命令,這邊有個小問題,webkit2jpg 默認必須使用 https 的鏈接,需要手動修改一下 webkit2jpg 的程序,可以參考鏈接 參考鏈接
webkit2png http://www.google.com/
復制代碼
可以在當前執行命令行的目錄當中發現 google 主頁圖片
那我想要截取頁面的某個部分轉換成圖片呢,webkit2jpg 完全 ok,查看使用文檔之后發現它是可以傳入 CSS選擇器參數
通過 chrome 瀏覽器的調試工具,可以很容易的找到指定區域的網頁元素所對應的選擇器
來試試看通過選擇器進行網頁截圖,在命令行輸入如下指令,可以看到對應的網頁截圖
webkit2png --ignore-ssl-check --selector=#today http://www.weather.com.cn/weather1d/101020100.shtml\#search
復制代碼
設置定時任務
萬事俱備,只欠東風,我們來設定一個定時的 job,這邊我是用的是 BlockingScheduler 庫,非常簡單易用
if __name__ == '__main__': from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler()
# 設置?;?job,這個 job 每 10 秒給我自己發送一條消息 # 讓微信機器人長期處于一個在線的狀態 sched.add_job(keep_online, 'interval', seconds=10) # 設置定時發送天氣預報的任務,通過 cron 表達式,指定發送周期為周一至周五每天早上 6:30 sched.add_job(weather_notification, 'cron', day_of_week='1-5', hour=6, minute=30) sched.start()
復制代碼
這邊有個小技巧,由于首次啟動微信聊天機器人需要掃碼登錄,因此 wxpy 提供了緩存功能,意味著可以讓微信保持長期在線,不用重復掃碼登錄
# 實例化機器人對象時,指定 cache_path 參數啟動緩存功能,qr_path 則是二維碼路徑bot = Bot(console_qr=2, cache_path=True, qr_path='wepy.pkl')
到此這篇關于python實現AI聊天機器人詳解流程的文章就介紹到這了,更多相關Python 聊天機器人內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_54556126/article/details/121273670