用python定时自动发微博_Python 教你自动发微博,每日一句英语
最近在研究用 Python 來制作各個類別的機器人,今天先來分享一個自動發(fā)布新浪微博的機器人。
基本思路
其實要實現(xiàn)一個簡單的自動發(fā)布微博機器人還是不難的,只需要每天按時找好要發(fā)布的素材(一般就是爬蟲了),然后再通過微博開放出來的 API 接口,自動發(fā)布即可。
素材
對于素材,我這里選取的是金山詞霸的每日一句英語,我們可以爬取該網(wǎng)站的相關(guān)信息來組成我們的微博素材。
http://news.iciba.com/views/dailysentence/
微博 API
微博給廣大開發(fā)者提供了一個開放平臺
https://open.weibo.com/
當(dāng)然在使用這個平臺之前,我們還是要先注冊并創(chuàng)建好應(yīng)用。比如像我這樣,創(chuàng)建好一個應(yīng)用
然后我們還需要設(shè)置好安全域名(后面發(fā)布微博時會用到),在應(yīng)用信息->基本信息中設(shè)置。
還需要設(shè)置應(yīng)用回調(diào)地址,在應(yīng)用信息->高級信息中設(shè)置。
當(dāng)然對于微博 API 的調(diào)用,我們可以使用其他人封裝好的第三方庫來更加方便的操作,我這里使用了一個就叫做“weibo”的庫,直接使用 pip 安裝。
pip install weibo
不過我遇到了安裝問題,報錯如下
Traceback?(most?recent?call?last):
File?"setup.py",?line?15,?in?
long_description=open('README.rst').read(),
UnicodeDecodeError:?'gbk'?codec?can't?decode?byte?0xae?in?position?241:?illegal?multibyte?sequence
看起來是編碼問題,我們可以通過修改源代碼來規(guī)避
1. 從 pypi.org 上下載 weibo 庫
2. 然后解壓該包,并修改文件 setup.py 如下代碼
long_description=open('README.rst',?encoding='utf-8').read(),
3. 分別執(zhí)行如下命令安裝
python?setup.py?build
python?setup.py?install
至此可以安裝 weibo 庫成功
準備工作與編寫思路就是這些,下面我們來看看具體的過程與代碼
自動發(fā)布微博
根據(jù) weibo 庫的說明文檔,使用其操作微博還是相關(guān)容易的,只需要提供我們創(chuàng)建微博應(yīng)用時的 App Key 與 App Secret 和應(yīng)用回調(diào)地址信息即可。簡單的調(diào)用代碼如下
from?weibo?import?Client
c?=?Client('App?Key',?'App?Secret',?'https://www.luobodazahui.top',?username='username',?password='password')
c.post('statuses/share',?status='haha'?+?安全域名)
我們運行該代碼,如果不出意外的話,我們就能夠在該賬號下的微博中看到剛剛發(fā)布的微博了。
最簡單的微博已經(jīng)發(fā)布成功了,那么能不能發(fā)布帶有圖片的微博呢,我們來嘗試一下
根據(jù)接口 statuses/share 的文檔說明,我們可以傳入 pic 參數(shù)來進行圖片的上傳
我們傳入 pic 參數(shù)嘗試下
f?=?open('4.png',?'rb')
c.post('statuses/share',?status='haha'?+?安全域名,?pic=f)
f.close()
可以的,能夠正常發(fā)布帶有圖片的微博
那么現(xiàn)在自動發(fā)布微博搞定了,我們再來看看如何自動獲取微博素材
微博素材
對于金山詞霸的每日一句,我們可以使用如下的一個 API 來獲得每天的信息
http://open.iciba.com/dsapi/
可以看到該接口返回的如下信息
我們可以直接使用 requests 庫來調(diào)用該接口
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']
現(xiàn)在我們來封裝兩個函數(shù),把功能完善起來
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'
現(xiàn)在我們就可以創(chuàng)建一個定時任務(wù),每天7點運行該腳本就可以啦
0 7 * * * python auto_weibo.py
總結(jié)
以上是生活随笔為你收集整理的用python定时自动发微博_Python 教你自动发微博,每日一句英语的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 网络知识:路由器要不要每天重启?很多人都
 - 下一篇: python装饰器带参数函数_当我使用带