python調用新浪api
1. 如何通過python調用新浪微博的API來爬取數據
1:安裝python(這個不多說啦)
2:下載新浪微博SDK的python包,解壓為weibopy目錄
3:申請AppKey,
流程:
1:通過oAuth認證
按我的理解簡化如下:
用戶在新浪微博給的頁面輸入賬號密碼,然後微博給應用一個PIN碼,這樣應用通過PIN碼才有許可權訪問該用戶的信息,而應用在整個過程中是接觸不到密碼的,所以用戶覺得很安全,後果很滿意
2:獲得認證之後,就可以使用微博SDK提供的API獲得信息啦
3:如果想設計web或者客戶端應用的話,那就繼續加個GUI好啦(未完成)
代碼:
#!/usr/bin/python
import webbrowser
from weibopy.auth import OAuthHandler
from weibopy.api import API
AppKey = '2525355147'
AppSecret = ''
my_auth = OAuthHandler(AppKey , AppSecret)
webbrowser.open(my_auth.get_authorization_url())
verifier = raw_input('PIN: ').strip()
my_auth.get_access_token(verifier)
my_api = API(my_auth)
for comment in my_api.mentions():
object = comment
id = object.__getattribute__("id")
text = object.__getattribute__("text")
print str(id) + " : " + text
2. 怎麼用python實現新浪微博的登陸與自動評論
新浪有api也有各種sdk,自己去看一下介面,沒有太大問題就能做出來。
3. API編程抓取新浪微博、大眾點評等方面的數據,編寫一套工具,抓取一類數據,用python語言編寫爬蟲
這個不難實現
但是你如果要可持續的話
這個幾乎是不可能實現的
鬼知道人家網頁什麼時候更新
所以這個自己做起來不會難
更新了自己可以隨時維護
4. 使用python或者java利用新浪微博開放平台提取好友的微博內容
多了不說,自己去看下新浪微博開放平台API,按照那個API內容,20行以內得到結果,然後自己再改下格式就可以了。
5. 怎樣用python爬新浪微博大V所有數據
先上結論,通過公開的api如果想爬到某大v的所有數據,需要滿足以下兩個條件:
1、在你的爬蟲開始運行時,該大v的所有微博發布量沒有超過回溯查詢的上限,新浪是2000,twitter是3200。
2、爬蟲程序必須不間斷運行。
新浪微博的api基本完全照搬twitter,其中介面的參數特性與底層的Nosql密不可分,建議先看點Nosql資料庫的設計理念有助於更好的理解api設計。
一般來說,如果決定爬某個大v,第一步先試獲取該用戶的基本信息,中間會包含一條最新的status,記下其中的id號作為基準,命名為baseId。
介面中最重要的兩個參數:
since_id:返回ID比since_id大的微博(即比since_id時間晚的微博),默認為0。
max_id:返回ID小於或等於max_id的微博,默認為0。
出於各種原因,獲取statuses的介面,固定為按id降序排列(scan_index_forward=false),即最新的statuses返回在前。假設該微博第一天上線,就一個用戶,發了一百條,id是1到100。而你在該用戶發了第50條的時候開始運行的爬蟲,即baseId=50。
假設按每次獲取10條歷史數據遞歸,先將max_id設為baseId,獲取該用戶id為41-50的微博,再將max_id設為41重復循環,直到返回微博數量為1或0。這步沒有問題。
獲取用戶最新的statuses就有些蛋疼了,since_id=50,同樣獲取10條數據,返回的並不是id值為51-60的數據,而是100-91的數據。簡單說就是你沒法從since_id逐步更新到用戶當前status,而是得一口氣從用戶當前status更新到上次爬蟲運行時得到的最後一條status。假設你的爬蟲一個月才運行一次,該用戶在這期間發了2300條微博,根據限制你只能更新2000條,這其中最老的300條在你的系統內就會出現「斷檔」。
最後一條,以上只針對公開的api,stackoverflow上twitter
API可以申請許可權突破數量限制和更改排序機制,微博也應該有類似機制。
6. python調用微博api的place介面出現10014錯誤,怎麼解決
一:獲取app-key 和 app-secret
使用自己的微博賬號登錄微博開放平台(http://open.weibo.com/),在微博開放中心下「創建應用」創建一個應用,應用信息那些隨便填,填寫完畢後,不需要提交審核,需要的只是那個app-key和app-secret
二:設置授權回調頁
7. 怎麼用python的sdk調用新浪微博API來提取給定ID用戶的微博信息
你仔細看一下新浪微博的幫助。按ID搜索微博內容似乎是被禁止的。即使有也是受限的。
事先需要申請一個開發者的ID,然後才能用這個ID登陸,繼而進行後續的操作。
8. 如何用python調用新浪微博的api
與Twitter相比,新浪微博做得更好的地方是直接提供了SDK(Twitter貌似只有第三方的SDK)。而我自然是用Python SDK,一個只有幾十k的玩意。
接著進入exanples文件夾(新浪這英文水平,不提了…),打開oauthSetTokenUpdate.py文件就是一個很標準的例子了。
於是照著寫了一個:
view sourceprint?01 # -*- coding: utf-8 -*-
02
03 from weibopy.auth import OAuthHandler
04 from weibopy.api import API
05
06
07 consumer_key= '應用的key'
08 consumer_secret ='應用的App Secret'
09
10 auth = OAuthHandler(consumer_key, consumer_secret)
11 auth_url = auth.get_authorization_url()
12 print 'Please authorize: ' + auth_url
13 verifier = raw_input('PIN: ').strip()
14 auth.get_access_token(verifier)
15 api = API(auth)
16
17 status = api.update_status(status='hello world', lat='12.3', long='45.6') # 注意status必須是UTF-8編碼的字元串,經緯度是可以不寫的
18 print status.id
19 print status.text
注意consumer_key和consumer_secret需要創建一個應用才能拿到。
運行這個程序,你會發現它可恥地失敗了,報出一條語法錯誤:
File 'C:\Documents and Settings\Administrator\Desktop\sinatpy\weibopy\api.py',
line 197 )(self, *args, post_data=post_data, headers=headers)
^SyntaxError: invalid syntax於是打開weibopy\api.py這個文件,把197行改成:
)(self, post_data=post_data, headers=headers, *args)
再運行這個程序就會提示一個URL鏈接,在瀏覽器里打開這個鏈接,並且給予訪問許可權,就會拿到一串PIN碼。把這個PIN碼輸上去,就會發送一條推了,並且還會顯示用戶的Access token key和Access token secret。
可以看到整個過程是很簡單的:
用你的consumer_key和consumer_secret創建一個OAuthHandler對象auth。
告訴用戶訪問auth.get_authorization_url(),並讓用戶授權這個應用。
拿到用戶的PIN碼,用auth.get_access_token()拿到用戶的Access token key和Access token secret。
用auth創建一個API對象api。
調用api的方法,例如update_status()就是發推。詳細說明可以看API文檔。
當然,每次都要求用戶輸入PIN碼也太傻了,所以在用auth.get_access_token()拿到Access token key和Access token secret之後,就可以直接用它們來創建API對象了:
view sourceprint?01 # -*- coding: utf-8 -*-
02
03 from weibopy.auth import OAuthHandler
04 from weibopy.api import API
05
06
07 consumer_key= '應用的key'
08 consumer_secret ='應用的App Secret'
09 token = '用戶的Access token key'
10 tokenSecret = '用戶的Access token secret'
11
12 auth = OAuthHandler(consumer_key, consumer_secret)
13 auth.setToken(token, tokenSecret)
14 api = API(auth)
15
16 status = api.update_status(status='搞定收工~')
最後想說的是新浪微博的應用審核真麻煩,沒通過審核的想show下自己個性化的應用名都不行。罷了,反正我也只是玩玩而已~
看看有沒有用