2010-11-22 25 views
5

Pour un projet de recherche, je collecte des tweets en utilisant Python-Twitter. Cependant, lorsque nous exécutons notre programme sans escale sur un seul ordinateur pendant une semaine, nous ne collectons que 20 Mo de données par semaine. Je ne fais tourner ce programme que sur une machine afin de ne pas collecter deux fois les mêmes tweets.Comment collecter des tweets plus rapidement en utilisant l'API Twitter en Python?

Notre programme exécute une boucle qui appelle getPublicTimeline() toutes les 60 secondes. J'ai essayé d'améliorer cela en appelant getUserTimeline() sur certains des utilisateurs apparus dans le calendrier public. Cependant, cela m'a toujours empêché de collecter des tweets pendant environ une demi-heure à chaque fois. Même sans l'interdiction, il semblait qu'il y avait très peu de rapidité en ajoutant ce code.

Je connais la «liste blanche» de Twitter qui permet à un utilisateur de soumettre plus de demandes par heure. J'ai postulé pour cela il y a environ trois semaines, et je n'ai plus de nouvelles depuis, alors je cherche des alternatives qui permettront à notre programme de collecter des tweets plus efficacement sans dépasser la limite de taux standard. Est-ce que quelqu'un sait d'une manière plus rapide de recueillir des tweets publics de Twitter? Nous aimerions obtenir environ 100 Mo par semaine.

Merci.

+0

ancien post, mais pour les personnes qui trébuchent ici: getPublicTimeline() n'est pas dans l'API Twitter actuelle ni le code python-twitter, mais il obtient probablement la chronologie de l'utilisateur qui a été authentifié - je suppose que c'est la raison pour le petit nombre de tweets. Je ne pense pas que vous pouvez faire une requête ouverte avec l'API REST, mais avec l'API de streaming vous pouvez (donne je pense .1% de la firehose - beaucoup pour obtenir des concerts de données dans quelques jours) – drevicko

Répondre

5

Comment utiliser le streaming API? C'est exactement le cas d'utilisation pour lequel il a été créé. Avec l'API de streaming, vous n'aurez aucun problème à collecter des mégaoctets de tweets. Vous ne serez toujours pas en mesure d'accéder à tous les tweets (firehose) ou même un échantillon statistiquement significatif (gardenhose) sans être autorisé à accéder à Twitter.

1

J'ai fait un projet similaire en analysant les données des tweets. Si vous vous contentez d'un simple angle de collecte/analyse de données, vous pouvez simplement récupérer les meilleurs sites qui collectent ces tweets pour diverses raisons. De nombreux sites vous permettent de rechercher par hashtag, alors lancez un hashtag assez populaire et vous avez des milliers de résultats. J'ai juste gratté quelques-uns de ces sites pour des hashtags populaires, les ai rassemblés dans une grande liste, ai interrogé cette liste sur le site, et ai enlevé toutes les informations utilisables des résultats. Certains sites vous permettent également d'exporter les données directement, ce qui rend cette tâche encore plus facile. Vous obtiendrez beaucoup de résultats indésirables que vous devrez probablement filtrer (spam, langue étrangère, etc.), mais c'est le moyen le plus rapide qui a fonctionné pour notre projet. Twitter ne vous accordera probablement pas le statut de liste blanche, donc je ne compterais certainement pas sur cela.

+0

Pourriez-vous donner quelques indications sur de bons exemples de tels sites Web? – radek

1

Il y a assez bon tutorial de ars technica sur l'utilisation de streaming API n Python qui pourrait être utile ici. Dans le cas contraire, vous pouvez essayer doing it via cURL.

.