Wie speichere ich Streaming-Tweets in JSON über Tweepy?

Ich habe Python für ein paar Monate durch Online-Kurse gelernt und möchte mein Lernen durch ein reales Mini-Projekt fördern.

Für dieses Projekt möchte ich Tweets von der Twitter-Streaming-API sammeln und sie im json-Format speichern (obwohl Sie auch nur die wichtigsten Informationen wie status.text und status.id speichern können, wurde mir der beste Weg empfohlen Dazu müssen alle Daten gespeichert und anschließend verarbeitet werden. Mit dem Hinzufügen von on_data () funktioniert der Code jedoch nicht mehr. Kann mir bitte jemand weiterhelfen? Ich bin auch offen für Vorschläge, wie Tweets am besten gespeichert / verarbeitet werden können! Mein Endziel ist es, Tweets basierend auf demografischen Variablen (z. B. Land, Alter des Benutzerprofils usw.) und der Stimmung bestimmter Marken (z. B. Apple, HTC, Samsung) verfolgen zu können.

Darüber hinaus möchte ich auch versuchen, Tweets nach Standort UND Stichwörtern zu filtern. Ich habe den Code von angepasstSo fügen Sie dem Tweepy-Modul einen Standortfilter hinzu separat. Es funktioniert zwar bei einigen wenigen Schlüsselwörtern, hört jedoch auf, wenn die Anzahl der Schlüsselwörter zunimmt. Ich gehe davon aus, dass mein Code ineffizient ist. Gibt es eine bessere Möglichkeit?

### code to save tweets in json###
import sys
import tweepy
import json

consumer_key=" "
consumer_secret=" "
access_key = " "
access_secret = " "

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
file = open('today.txt', 'a')

class CustomStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print status.text

    def on_data(self, data):
        json_data = json.loads(data)
        file.write(str(json_data))

    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True # Don't kill the stream

    def on_timeout(self):
        print >> sys.stderr, 'Timeout...'
        return True # Don't kill the stream

sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
sapi.filter(track=['twitter'])

Antworten auf die Frage(3)

Ihre Antwort auf die Frage