2014-01-31 45 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 
相关问题