Skip to content

Instantly share code, notes, and snippets.

@jliebana
Created August 27, 2017 16:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jliebana/d68a2bf50a6141ef12a6811d0c0f34dc to your computer and use it in GitHub Desktop.
Save jliebana/d68a2bf50a6141ef12a6811d0c0f34dc to your computer and use it in GitHub Desktop.
Obtener tweets con paginación
"""
@author jliebana
Este script obtiene los tweets de un usuario haciendo paginación, ya que los límites de la API de Twitter
no permiten obtener más de 200 mensajes en la misma petición.
"""
import twitter #https://github.com/bear/python-twitter/
#Rellenar con los datos de la API de Twitter
consumer_key = ''
consumer_secret = ''
access_token_key = ''
access_token_secret = ''
api = twitter.Api(
consumer_key=consumer_key,
consumer_secret=consumer_secret,
access_token_key=access_token_key,
access_token_secret=access_token_secret,
sleep_on_rate_limit=True # Necesario para que no excedernos de los límites de la API
)
def get_tweets():
count_tweets = 0
id_user= #id del usuario del que queremos obtener los tweets
since_id= #id del tweet más antiguo que queremos obtener
max_id_tweet= #id del tweet más reciente que queremos obtener
path_result= #fichero donde escribir los resultados. Cada linea será un diccionario.
with open(path_result,"w") as f:
statuses = api.GetUserTimeline(user_id=id_user ,count=200)
for s in statuses:
f.write(str(s.AsDict()))
f.write("\n")
oldest_id = statuses[-1].id
count_tweets+=len(statuses)
print("Obtenidos los primeros [{}] tweets".format(len(statuses)))
while oldest_id > max_id_tweet :
statuses = api.GetUserTimeline(user_id=id_user,count=200,since_id=since_id,max_id=oldest_id)
print("Obtenidos los [{}] siguientes".format(len(statuses)))
count_tweets+=len(statuses)
if(len(statuses))>0:
for s in statuses:
f.write(str(s.AsDict()))
f.write("\n")
oldest_id = statuses[-1].id
else:
oldest_id=max_id_tweet
print("Leidos [{}] tweets".format(count_tweets))
if __name__ == "__main__":
get_tweets()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment