2014-01-31 72 views
1

我是python中的初學者。我使用下面的代碼根據輸入查詢來獲取推文。如何在python中使用twitter API獲取推文?

import urllib 
import urllib2 
import json 
def getData(keyword): 
    url = 'http://search.twitter.com/search.json' 
    data = {'q': keyword, 'lang': 'en', 'result_type': 'recent'} 
    params = urllib.urlencode(data) 
    try: 
     req = urllib2.Request(url, params) 
     response = urllib2.urlopen(req) 
     jsonData = json.load(response) 
     tweets = [] 
     for item in jsonData['results']: 
      tweets.append(item['text']) 
     return tweets 
    except urllib2.URLError, e: 
     self.handleError(e) 
    return tweets 
tweets = getData("messi") 
print tweet 

但我在上面的代碼中得到以下錯誤。 名稱錯誤:沒有定義全局名稱'self'。我怎樣才能糾正這個錯誤?

+1

我猜你發現這個功能在線,它是一個類的一部分。你可以刪除'self.'並編寫一個名爲'handleError'的函數來處理這個問題。 – ChrisP

+0

你應該看看'twitter'包,它的點子。 –

+0

這完全不起作用,因爲REST API v1已被棄用。您需要通過OAuth進行身份驗證 - >查看其中一個Twitter包,如果您不想自己處理整個OAuth進程 – dorvak

回答

1

ChrisP說,首先你需要從你的代碼中刪除self.。 那麼你可能會得到另一個錯誤,因爲handleError函數沒有在代碼中的任何地方定義。所以,如果你還沒有定義,你必須定義handleError函數。

查看python doc以瞭解關於類和對象的更多信息。

import urllib 
import urllib2 
import json 

#defining handleError 
def handleError(e): 
    #Error Handling code goes here 

def getData(keyword): 
    url = 'http://search.twitter.com/search.json' 
    data = {'q': keyword, 'lang': 'en', 'result_type': 'recent'} 
    params = urllib.urlencode(data) 
    try: 
     req = urllib2.Request(url, params) 
     response = urllib2.urlopen(req) 
     jsonData = json.load(response) 
     tweets = [] 
     for item in jsonData['results']: 
      tweets.append(item['text']) 
     return tweets 
    except urllib2.URLError, e: 
     handleError(e) #removed self. 
    return tweets 
tweets = getData("messi") 
print tweet 
相關問題