2015-10-29 3 views
1

Я пытаюсь использовать twitter streaming API и языковой фильтр. Как было предложено руководством API Twitter (https://dev.twitter.com/streaming/overview/request-parameters#language), я поставил следующие способы, и никто из них не работает.Python 2.7 twitter streaming api language filter

filter(track=['keyword'],language=en) # NameError: name 'en' is not defined 

filter(track=['keyword'],language='en') # TypeError: filter() got an unexpected keyword argument 'language' 

filter(track=['keyword'],language=['en']) # TypeError: filter() got an unexpected keyword argument 'language' 

filter(track=['keyword'],lan=en) #TypeError: filter() got an unexpected keyword argument 'lan' 

filter(track=['keyword'],lan='en') #TypeError: filter() got an unexpected keyword argument 'lan' 

filter(track=['keyword'],lan=['en']) #TypeError: filter() got an unexpected keyword argument 'lan' 

Я также попробовал en-US вместо en. Все еще не работает.

Не могли бы вы рассказать об этом гуру? Благодаря! Ниже приведен полный код:

#Import the necessary methods from tweepy library 
# The code is modified from the following links 
# http://adilmoujahid.com/posts/2014/07/twitter-analytics/ 
# Streaming API requesting parameters: https://dev.twitter.com/streaming/overview/request-parameters#language 
from tweepy.streaming import StreamListener 
from tweepy import OAuthHandler 
from tweepy import Stream 

#Variables that contains the user credentials to access Twitter API (removed for privacy) 
access_token = "" 
access_token_secret = "" 
consumer_key = "" 
consumer_secret = "" 

#This is a basic listener that just prints received tweets to stdout. 
class StdOutListener(StreamListener): 

    def on_data(self, data): 
     print data 
     return True 

    def on_error(self, status): 
     print status 

if __name__ == '__main__': 

    #This handles Twitter authetification and the connection to Twitter Streaming API 
    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    stream = Stream(auth, l) 

#This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby' 
    stream.filter(track=['abc']) # <= here is the language filter issue 
+0

По ошибке на скриншоте нет ключевого слова agrument с языком/lan в нем. Проверьте документацию. –

+0

Привет, в официальном документе говорится: «Например, соединение с языком = en приведет только к твитам, обнаруженным на английском языке». Но это никогда не срабатывает. Вот почему я публикую здесь. – Chubaka

+0

Вы используете любой пакет python? Отправьте еще несколько кодов. –

ответ

2

Правильное название ключевого слова для функции filter() фактически languages (обратите внимание на s на конце.) Итак, ваша последняя строка должна выглядеть следующим образом:

stream.filter(track=['abc'], languages=['en']) 
+0

Спасибо! Оно работает! – Chubaka