2014-01-31 4 views
1

Я стартер в python.Я использую следующий код, чтобы получить твиты в зависимости от входного запроса.Как получить твиты с помощью twitter API в python?

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', его на pip. –

+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 
Смежные вопросы