2014-11-12 2 views
15

Я использую Tweepy API для извлечения каналов Twitter. Я хочу извлечь все каналы Twitter только определенного языка. Фильтр языка работает только в том случае, если предусмотрен фильтр track. Следующий код возвращает 406 ошибку:Фильтровать каналы Twitter только по языку

l = StdOutListener() 
auth = OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 
stream = Stream(auth, l) 
stream.filter(languages=["en"]) 

Как я могу извлечь все твиты от определенного языка с использованием Tweepy?

+0

Вы решили эту проблему. Я также хочу извлечь конкретный язык, например, japanese. – tktktk0711

ответ

19

Вы не можете (без специального доступа). Поток все твиты (нефильтрованные) требуют подключения к the firehose, которое предоставляется только в особых случаях использования Twitter. Честно говоря, firehose на самом деле не нужно - правильное использование track может дать вам больше твитов, чем вы знаете, что делать.

Попробуйте использовать что-то вроде этого:

stream.filter(languages=["en"], track=["a", "the", "i", "you", "u"]) # etc 

Фильтрация словами, как, что поможет вам много, много твитов. Если вам нужны реальные данные для наиболее часто используемых слов, ознакомьтесь с этой статьей со времени: The 500 Most Frequently Used Words on Twitter. Вы можете использовать ключевые слова up to 400, но это, вероятно, приблизится к 1% -му пределу твитов в заданный интервал времени. Если ваш параметр track соответствует 60% всех твитов в заданный момент времени, вы все равно получите только 1% (это много твитов).

+0

Спасибо! Я набирал 'stream.filter (lang = [" en "], track = [" something "])' – Krishh

2

Другой, чем получать отфильтрованные твито непосредственно, вы можете фильтровать после получения всех твитов разных языков:

tweets = api.search("python") for tweet in tweets: if tweet.lang == "en": print(tweet.text) #Do the stuff here

Надеется, что это помогает.

Смежные вопросы