2014-02-05 2 views
4

Вопрос уже задан пару раз. Например, here или here. Однако ответа не было найдено. Кроме того, оба вопроса относятся к Twitter API версии 1.0, который больше не используется. Таким образом, я думал, что было бы полезно разделить простой фрагмент кода, который я написал, чтобы иметь количество твитов, содержащих заданное ключевое слово (или фразу).Количество результатов для конкретного слова на Twitter (API v1.1)

Если у вас есть любые отзывы, не стесняйтесь ответить.

ответ

6

Здесь:

#Import the required modules 
from twython import Twython 
import json 
import csv 

#Set parameters 
keyword = 'kittens'; #The desired keyword(s) 
tweetsXiteration = 100; #Where 100 is the max 
dateFrom = '2014-02-01'; #Inclusive (YYYY-MM-DD) 
dateTo = '2014-02-02'; #Exclusive (YYYY-MM-DD) 
done = False; #Must be false 

#Setting the OAuth 
Consumer_Key = 'XXX'; 
Consumer_Secret = 'XXX'; 
Access_Token = 'XXX'; 
Access_Token_Secret = 'XXX'; 

#Connection established with Twitter API v1.1 
twitter = Twython(Consumer_Key, Consumer_Secret, Access_Token, Access_Token_Secret); 

#Twitter is queried 
response = twitter.search(q = keyword, count = tweetsXiteration, since = dateFrom, until = dateTo, result_type = 'mixed'); 

#Results (partial) 
countTweets = len(response['statuses']); 

#If all the tweets have been fetched, then we are done 
if not ('next_results' in response['search_metadata']): 
    done = True; 

#If not all the tweets have been fetched, then... 
while (done == False): 

    #Parsing information for maxID 
    parse1 = response['search_metadata']['next_results'].split("&"); 
    parse2 = parse1[0].split("?max_id="); 
    parse3 = parse2[1]; 
    maxID = parse3; 

    #Twitter is queried (again, this time with the addition of 'max_id') 
    response = twitter.search(q = keyword, count = tweetsXiteration, since = dateFrom, until = dateTo, max_id = maxID, include_entities = 1, result_type = 'mixed'); 

    #Updating the total amount of tweets fetched 
    countTweets = countTweets + len(response['statuses']);  

    #If all the tweets have been fetched, then we are done 
    if not ('next_results' in response['search_metadata']): 
     done = True; 

print(countTweets); 

Имейте в виду, что:

  1. необходимо пройти проверку подлинности корыто OAuth;
  2. Вы можете получать результаты не ранее, чем через неделю;
  3. Если вы хотите найти несколько слов, вам нужно использовать «", если вас интересуют только результаты, содержащие два слова в этом конкретном порядке (например, «Переполнение стека»).

Дополнительную информацию можно найти here или по телефону Twitter official documentation.

+0

Что случилось со всеми этими точками с запятой? –

+1

Слишком много лет как программист MATLAB, извините! –

+0

:). Кроме того, вероятно, рекомендуется использовать встроенные значения «True» и «False» Python вместо строк «true» и «false». –

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