【牛牛牛】Python 教你自動發微博,每日一句英語!

最近在研究用 Python 來製作各個類別的機器人,今天先來分享一個自動發佈新浪微博的機器人。

基本思路

其實要實現一個簡單的自動發佈微博機器人還是不難的,只需要每天按時找好要發佈的素材(一般就是爬蟲了),然後再通過微博開放出來的 API 接口,自動發佈即可。

素材

對於素材,我這裏選取的是金山詞霸的每日一句英語,我們可以爬取該網站的相關信息來組成我們的微博素材。

http://news.iciba.com/views/dailysentence/

微博 API

微博給廣大開發者提供了一個開放平臺

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

看起來是編碼問題,我們可以通過修改源代碼來規避

  • 1. 從 pypi.org 上下載 weibo 庫

  • 2. 然後解壓該包,並修改文件 setup.py 如下代碼

long_description=open('README.rst', encoding='utf-8').read(),
  • 3. 分別執行如下命令安裝

python setup.py build
python setup.py install

至此可以安裝 weibo 庫成功

準備工作與編寫思路就是這些,下面我們來看看具體的過程與代碼

自動發佈微博

根據 weibo 庫的說明文檔,使用其操作微博還是相關容易的,只需要提供我們創建微博應用時的 App Key 與 App Secret 和應用回調地址信息即可。簡單的調用代碼如下

from weibo import Client


c = 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 requests


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']

現在我們來封裝兩個函數,把功能完善起來

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

最後效果如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章