基本思路
其實要實現一個簡單的自動釋出微博機器人還是不難的,只需要每天按時找好要釋出的素材(一般就是爬蟲了),然後再通過微博開發出來的 API 介面,自動釋出即可。
素材對於素材,我這裡選取的是金山詞霸的每日一句英語,我們可以爬取該網站的相關資訊來組成我們的微博素材。
微博 APIhttp://news.iciba.com/views/dailysentence/
微博給廣大開發者提供了一個開放平臺
https://open.weibo.com/
當然在使用這個平臺之前,我們還是要先註冊並建立好應用。比如像我這樣,建立好一個應用
然後我們還需要設定好安全域名(後面釋出微博時會用到),在應用資訊->基本資訊中設定。
還需要設定應用回撥地址,在應用資訊->高階資訊中設定。
當然對於微博 API 的呼叫,我們可以使用其他人封裝好的第三方庫來更加方便的操作,我這裡使用了一個就叫做“weibo”的庫,直接使用 pip 安裝。
pip install weibo
不過我遇到了安裝問題,報錯如下
Traceback (most recent call last): File "setup.py", line 15, in <module> long_description=open('README.rst').read(),UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence
看起來是編碼問題,我們可以通過修改原始碼來規避
2. 然後解壓該包,並修改檔案 setup.py 如下程式碼long_description=open('README.rst', encoding='utf-8').read(),
3. 分別執行如下命令安裝
python setup.py buildpython setup.py install
至此可以安裝 weibo 庫成功
準備工作與編寫思路就是這些,下面我們來看看具體的過程與程式碼
自動釋出微博根據 weibo 庫的說明文件,使用其操作微博還是相關容易的,只需要提供我們建立微博應用時的 App Key 與 App Secret 和應用回撥地址資訊即可。簡單的呼叫程式碼如下
from weibo import Clientc = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username', password='password')c.post('statuses/share', status='haha' + 安全域名)
我們執行該程式碼,如果不出意外的話,我們就能夠在該賬號下的微博中看到剛剛釋出的微博了。
最簡單的微博已經發布成功了,那麼能不能釋出帶有圖片的微博呢,我們來嘗試一下
根據介面 statuses/share 的文件說明,我們可以傳入 pic 引數來進行圖片的上傳
我們傳入 pic 引數嘗試下
f = open('4.png', 'rb')c.post('statuses/share', status='haha' + 安全域名, pic=f)f.close()
可以的,能夠正常釋出帶有圖片的微博
那麼現在自動釋出微博搞定了,我們再來看看如何自動獲取微博素材
微博素材對於金山詞霸的每日一句,我們可以使用如下的一個 API 來獲得每天的資訊
http://open.iciba.com/dsapi/
可以看到該介面返回的如下資訊
我們可以直接使用 requests 庫來呼叫該介面
import requestsurl = 'http://open.iciba.com/dsapi/'res = requests.get(url)content_e = res.json()['content']content_c = res.json()['note']content = content_e + '\\n' + content_ccontent_t = res.json()['picture2']現在我們來封裝兩個函式,把功能完善起來
def weibo(content, picture): ff = requests.get(picture).content c = Client(app_key, app_secret, 'https://www.luobodazahui.top', username=username, password=password) c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff)def auto_weibo(): url = 'http://open.iciba.com/dsapi/' res = requests.get(url) content_e = res.json()['content'] content_c = res.json()['note'] content = content_e + '\\n' + content_c content_t = res.json()['picture2'] weibo(content, content_t) return 'OK'現在我們就可以建立一個定時任務,每天7點執行該指令碼就可以啦
0 7 * * * python auto_weibo.py
最後效果如下