Python腳本實(shí)現(xiàn)自動(dòng)發(fā)帶圖的微博
要自動(dòng)發(fā)微博最簡(jiǎn)單的辦法無非是調(diào)用新浪微博的API(因?yàn)橹皇呛?jiǎn)單的發(fā)微博,就沒必要用它的SDK了)。參考開發(fā)文檔http://open.weibo.com/wiki/API 進(jìn)行代碼編寫
創(chuàng)建應(yīng)用
要使用微博的API,需先要有個(gè)應(yīng)用。隨便是個(gè)應(yīng)用就行,可以到這里注冊(cè)一個(gè)站內(nèi)應(yīng)用應(yīng)用注冊(cè)。注冊(cè)應(yīng)用的主要目的是要獲得MY_APPKEY 和MY_ACCESS_TOKEN,如圖所示
獲取access_token
API的調(diào)用需要登錄授權(quán)獲得access_token。參考
首先,調(diào)用https://api.weibo.com/oauth2/authorize接口,獲得code。
該接口有三個(gè)必須的參數(shù):
•client_id:申請(qǐng)應(yīng)用時(shí)分配的AppKey。
•redirect_url:就是創(chuàng)建應(yīng)用中設(shè)置的回調(diào)地址
•response_type:響應(yīng)類型,可設(shè)置為code
具體做法,就是在瀏覽器打開https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code。該方法會(huì)轉(zhuǎn)到授權(quán)頁面,授權(quán)之后會(huì)轉(zhuǎn)到http://www.example.com/response&code=CODE,記錄下該url中的CODE。
接著,調(diào)用https://api.weibo.com/oauth2/access_token接口,獲得access_token。
該接口有如下必須的參數(shù):
•client_id:申請(qǐng)應(yīng)用時(shí)分配的AppKey。
•client_secret:申請(qǐng)應(yīng)用時(shí)分配的AppSecret。
•grant_type:請(qǐng)求的類型,填寫authorization_code
•code:調(diào)用authorize獲得的code值。
•redirect_uri: 就是創(chuàng)建應(yīng)用中設(shè)置的回調(diào)地址
具體做法就是構(gòu)建一個(gè)POST請(qǐng)求,再在返回的數(shù)據(jù)中找到access_token,保存下來。具體的Python代碼:
import requests url_get_token = "https://api.weibo.com/oauth2/access_token" #構(gòu)建POST參數(shù) playload = { "client_id":"填入你的", "client_secret":"填入你的", "grant_type":"authorization_code", "code":"上面獲得的CODE", "redirect_uri":"你的回調(diào)用地址" } #POST請(qǐng)求 r = requests.post(url_get_token,data=playload) #輸出響應(yīng)信息 print r.text
如果正常的話,會(huì)返回下面這樣的json數(shù)據(jù):
{"access_token":"我們要記下的","remind_in":"157679999","expires_in":157679999,"uid":"1739207845"}
根據(jù)返回的數(shù)據(jù),access_token的值就是我們要的。其中remind_in的值是access_token的有效期,單位為秒,我們可以看到,這個(gè)時(shí)間有3、4年之久,足夠我們用了。
發(fā)表純文字微博
調(diào)用接口https://api.weibo.com/2/statuses/update.json發(fā)表文字微博,其參數(shù)如下
其中必須的:
•access_token: 就是我們上一步獲得的access_token
•status:要發(fā)布的微博文本內(nèi)容,必須做URLencode,內(nèi)容不超過140個(gè)漢字
具體代碼:
#發(fā)表文字微博的接口 url_post_a_text = "https://api.weibo.com/2/statuses/update.json" #構(gòu)建POST參數(shù) playload = { "access_token":"填入你的", "status":"This is a text test@TaceyWong" } #POST請(qǐng)求,發(fā)表文字微博 r = requests.post(url_post_a_text,data = playload)
如果正常,會(huì)有向下面這樣的結(jié)果
發(fā)表帶圖片的微博
調(diào)用接口http://open.weibo.com/wiki/2/statuses/upload發(fā)表圖片微博,其參數(shù)如下:
其中必須的參數(shù):
•access_token: 就是我們上一步獲得的access_token
•status:要發(fā)布的微博文本內(nèi)容,必須做URLencode,內(nèi)容不超過140個(gè)漢字
•pic:要發(fā)表的圖片,采用multipart/form-data編碼方式
具體的代碼:
#發(fā)表圖文微博的接口 url_post_pic = "https://upload.api.weibo.com/2/statuses/upload.json" #構(gòu)建文本類POST參數(shù) playload={ "access_token":"2.0086XhtBIQLH7Ed67706b6c8TQ8XdE", "status":"Test:Post a text with a pic & AT someone@丸子覠" } #構(gòu)建二進(jìn)制multipart/form-data編碼的參數(shù) files={ "pic":open("logo.png","rb") } #POST請(qǐng)求,發(fā)表微博 r = requests.post(url_post_pic,data=playload,files = files)
如果正常,結(jié)果會(huì)像下面這樣:
注:requests的具體用法請(qǐng)參考[requests文檔](http://docs.python-requests.org/en/master/)
相關(guān)文章
python?ocr簡(jiǎn)單示例之識(shí)別驗(yàn)證碼
OCR(Optical character recognition,光學(xué)字符識(shí)別)是一種將圖像中的手寫字或者印刷文本轉(zhuǎn)換為機(jī)器編碼文本的技術(shù),下面這篇文章主要給大家介紹了關(guān)于python?ocr簡(jiǎn)單示例之識(shí)別驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下2023-01-01python+opencv實(shí)現(xiàn)移動(dòng)偵測(cè)(幀差法)
這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)移動(dòng)偵測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Python基礎(chǔ)之面向?qū)ο筮M(jìn)階詳解
這篇文章主要為大家詳細(xì)介紹了Python基礎(chǔ)之面向?qū)ο筮M(jìn)階,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02python腳本實(shí)現(xiàn)xls(xlsx)轉(zhuǎn)成csv
這篇文章主要介紹了python腳本實(shí)現(xiàn)xls(xlsx)轉(zhuǎn)成csv的相關(guān)資料,需要的朋友可以參考下2016-04-04wxpython中利用線程防止假死的實(shí)現(xiàn)方法
上午抽空學(xué)習(xí)了一下在wxpython中啟用線程的方法,將GUI和功能的執(zhí)行分開,果然程序運(yùn)行起來杠杠滴。因?yàn)槲夷莻€(gè)軟件的代碼暫時(shí)不能公開,這里專門寫個(gè)小程序,作為今天的筆記吧2014-08-08一文教會(huì)你調(diào)整Matplotlib子圖的大小
Matplotlib的可以把很多張圖畫到一個(gè)顯示界面,這就設(shè)計(jì)到面板切分成一個(gè)一個(gè)子圖,下面這篇文章主要給大家介紹了關(guān)于調(diào)整Matplotlib子圖大小的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Python Pyvis庫創(chuàng)建交互式網(wǎng)絡(luò)圖實(shí)例探究
這篇文章主要為大家介紹了Python Pyvis庫創(chuàng)建交互式網(wǎng)絡(luò)圖的實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12scrapy爬蟲遇到j(luò)s動(dòng)態(tài)渲染問題
本文主要介紹了scrapy爬蟲遇到j(luò)s動(dòng)態(tài)渲染問題,通過js渲染出來的動(dòng)態(tài)網(wǎng)頁的內(nèi)容與網(wǎng)頁文件內(nèi)容是不一樣的,本文就來解決一下這些問題,感興趣的可以了解一下2022-05-05Python模擬實(shí)現(xiàn)全功能貸款計(jì)算器
在個(gè)人理財(cái)中,貸款計(jì)算器是一款非常實(shí)用的工具,本文將教你如何使用Python編寫一個(gè)全功能的貸款計(jì)算器,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12