2012-08-23 4 views
1

Comment obtenir des 1500 tweets? J'ai essayé le paramètre de page et j'ai découvert que cela ne fonctionnait pas et que je suis maintenant bloqué avec max_id et since_id. Je ne connais pas max_id et since_id. Si je fais une requête, je voudrais obtenir les tweets 1500 les plus récents depuis que la requête a été envoyée. Voici mon code:python twitter api résultats les plus récents

# -*- coding: utf-8 -*- 
import urllib 
import simplejson 

def searchTweets(query): 
search = urllib.urlopen("http://search.twitter.com/search.json?q="+query) 
dict = simplejson.loads(search.read()) 
counter = 0 
for result in dict["results"]: 
    print "*",result["text"].encode('utf-8') 
    counter += 1 
print "\n",counter," tweets found","\n" 

searchTerm = "steak" 
searchTweets(searchTerm+"&rpp=100&page=15") 

Est-ce que quelqu'un connaît une solution?

+0

S'il vous plaît noter que c'est pour l'API version 1.0 et n'est plus valide. – philshem

Répondre

1

a obtenu ce travail pour moi 1200 tweets:

# -*- coding: utf-8 -*- 
import urllib 
import simplejson 

def searchTweets(query, minimum_tweets): 
    results = [] 
    i=0 
    while len(results)<minimum_tweets: 
    if i==0: # First time through don't include max id 
     response = urllib.urlopen("http://search.twitter.com/search.json?q="+query+"&rpp=100") 
    else: # Subsequent times include max id 
     response = urllib.urlopen("http://search.twitter.com/search.json?q="+query+"&rpp=100&max_id="+max_id) 
    response = simplejson.loads(response.read()) 
    if not response['results']: break # Break if no tweets are returned 
    max_id = str(long(response['results'][-1]['id_str'])-1) # Define max_id for next iteration 
    results.extend(response['results']) # Extend tweets to results array 
    i += 1 

    print "\n",len(results)," tweets found","\n" 

searchTerm = "steak" 
searchTweets(searchTerm, 1200) 

Le problème est que les pauses assez souvent API twitter recherche et il n'y a pas de traitement d'erreur, ou ici relances. Mais il devrait vous montrer la logique derrière le max_id. Je fais le max_id un de moins que l'id du dernier tweet qui a été tiré, donc il n'y a pas de répétitions.

De plus, il existe certainement des manières plus élégantes de décider d'inclure ou non max_id dans l'URL. Cette solution était parce que max_id doesn't have a default value (que j'espérais: p)

+0

Très bien. Je vous remercie. –

+0

Ceci est pour l'API version 1.0 et n'est plus valide avec 1.1 – philshem

Questions connexes