2017-01-16 2 views
0

Je mène une opération d'extraction en tweepy, mais j'ai remarqué qu'il faut un certain temps pour obtenir un nombre important de tweets. Une estimation approximative serait 3000 tweets dans environ 3-4 heures - je vise 1 million en deux jours. Des requêtes similaires suggèrent que cela pourrait être "juste votre machine", mais j'espérais une réponse plus spécifique. Est-ce que je serais capable d'accélérer les choses si j'utilisais un service de remplacement de serveur avancé? Désolé, je n'ai pas d'expérience en informatique. Voici mon code:Quoi qu'il en soit pour augmenter la vitesse d'extraction de Twitter?

from tweepy import Stream 
from tweepy.streaming import StreamListener 

class MyListener(StreamListener): 

def on_data(self, data): 
    try: 
     with open('python2.json', 'a') as f: 
      f.write(data) 
      return True 
    except BaseException as e: 
     print(Error) 
    return True 

def on_error(self, status): 
    print(status) 
    return True 

twitter_stream = Stream(auth, MyListener()) 
twitter_stream.filter(track=['#happy']) 

Merci!

+0

Avez-vous besoin seulement des "nouveaux" tweets ou aussi les anciens sont bons? – Giordano

+0

L'avez-vous résolu? – Giordano

+0

Oui, j'avais vraiment besoin des anciens tweets, mais je ne me rendais pas compte que ma fonction stream ne recevait qu'un flux en direct. J'ai implémenté une variante de votre solution ci-dessous et j'obtiens d'excellents résultats. Merci beaucoup! – Michael

Répondre

0

Vous utilisez la fonction Stream, alors disons que vous recevez les tweets en temps réel avec le hashtag #happy. La rapidité avec laquelle vous pouvez obtenir les données dépend également du nombre de personnes qui tweetent avec ce hashtag pour le moment.
Si j'ai bien compris votre question, vous obtiendrez des tweets pour une analyse. Si oui, je pense que vous pouvez utiliser les anciens tweets.
Pour ce faire, vous pouvez suivre deux façons différentes:

  1. Utilisez tweepy api (pas en continu)
  2. Utilisez GetOldTweets-python bibliothèque

Je vous suggère d'utiliser le second parce que permet d'obtenir tweets sans limites de taux.

ci-après, il est un exemple pour faire ce que vous avez essayé de le faire dans votre question avec la bibliothèque GetOldTweets-python:

tweetCriteria = got3.manager.TweetCriteria().setQuerySearch('#happy').setSince("2016-05-01").setMaxTweets(3000) 
tweets = got3.manager.TweetManager.getTweets(tweetCriteria) 

for idx, tweet in enumerate(tweets): 
    data[idx] = tweet.text 

with open('python2.json', 'w') as outfile: 
    json.dump(data, outfile, indent=4) 

Avec ce code, j'ai 3000 tweets avec le hashtag #happy à 00:02: 58.617514.

Here, vous pouvez trouver un exemple complet et fonctionnel.

N'hésitez pas à me contacter pour des éclaircissements.

Faites-moi savoir.

+0

Excellent! Cette solution fonctionne! Merci Giordano. – Michael

+0

Vous êtes les bienvenus;) – Giordano