2010-11-22 9 views
5

Für ein Forschungsprojekt sammle ich Tweets mit Python-Twitter. Wenn wir jedoch unser Programm eine Woche lang nonstop auf einem einzigen Computer ausführen, können wir pro Woche nur etwa 20 MB Daten sammeln. Ich führe dieses Programm nur auf einem Computer aus, damit wir nicht dieselben Tweets zweimal sammeln.So sammeln Sie Tweets schneller mit Twitter API in Python?

Unser Programm führt eine Schleife aus, die getPublicTimeline() alle 60 Sekunden aufruft. Ich habe versucht, dies zu verbessern, indem ich getUserTimeline() für einige Benutzer aufgerufen habe, die in der öffentlichen Zeitleiste erschienen sind. Dies hat mir jedoch immer wieder das Sammeln von Tweets für etwa eine halbe Stunde verboten. Sogar ohne das Verbot schien es, dass es sehr wenig Beschleunigung gab, indem dieser Code hinzugefügt wurde.

Ich weiß über Twitter "Whitelisting", dass ein Benutzer mehr Anfragen pro Stunde senden kann. Ich habe mich vor etwa drei Wochen darum beworben und seitdem nichts mehr gehört, also suche ich nach Alternativen, die es unserem Programm ermöglichen, Tweets effizienter zu sammeln, ohne das Standardtarif-Limit zu überschreiten. Kennt jemand eine schnellere Möglichkeit, öffentliche Tweets von Twitter zu sammeln? Wir möchten ungefähr 100 MB pro Woche bekommen.

Danke.

+0

alten Beitrag, aber für Leute, die hier stolpern: GetPublicTimeline() ist nicht in der aktuellen Twitter API noch Python-Twitter-Code, aber es wird wahrscheinlich die Zeitleiste des Benutzers, der authentifiziert wurde - meine Vermutung ist der Grund für die kleine Anzahl von Tweets. Ich glaube nicht, dass Sie eine offene Abfrage mit der REST-API machen können, aber mit der Streaming-API können Sie das tun (ich denke, 0,1% der Firehose - viel, um einige Gigs von Daten in ein paar Tagen zu bekommen) – drevicko

Antwort

5

Wie wäre es mit der streaming API? Dies ist genau der Anwendungsfall, zu dem es erstellt wurde. Mit der Streaming-API werden Sie keine Probleme haben Megabytes an Tweets zu sammeln. Sie können jedoch immer noch nicht auf alle Tweets (Firehose) oder gar eine statistisch signifikante Stichprobe (Gardenhose) zugreifen, ohne jedoch Zugriff auf Twitter zu erhalten.

1

Ich habe ein ähnliches Projekt gemacht, das Daten von Tweets analysiert. Wenn Sie dies nur aus einer reinen Datensammlung/-analyse betrachten, können Sie einfach eine der besseren Websites, die diese Tweets sammeln, aus verschiedenen Gründen entfernen. Auf vielen Websites können Sie nach einem Hashtag suchen. Geben Sie also einen Hashtag ein, der ausreichend beliebt ist, und Sie haben Tausende von Ergebnissen. Ich habe gerade ein paar dieser Seiten für beliebte Hashtags gekratzt, diese in einer großen Liste gesammelt, diese Liste gegen die Seite abgefragt und alle brauchbaren Informationen aus den Ergebnissen herausgekratzt. Auf einigen Websites können Sie die Daten auch direkt exportieren, wodurch diese Aufgabe noch einfacher wird. Sie werden eine Menge Müll-Ergebnisse erhalten, die Sie wahrscheinlich filtern müssen (Spam, Fremdsprache usw.), aber das war der schnellste Weg, der für unser Projekt funktioniert hat. Twitter wird dir wahrscheinlich keinen Status auf der weißen Liste geben, also würde ich definitiv nicht darauf zählen.

+0

Könnten Sie geben einige Hinweise auf gute Beispiele solcher Websites? – radek

1

Es gibt ziemlich gute tutorial von ars technica auf Streaming-API n Python, die hier hilfreich sein könnte.

Andernfalls können Sie doing it über cURL versuchen.

.

Verwandte Themen