2017-03-10 2 views
1

J'essaie d'utiliser Streaming Api de Twitter et tweepy pour obtenir des tweets filtrés par des mots-clés (déjà fait) et leurs coordonnées que je peux plus tard tracer sur google map. Cependant, j'obtiens une erreur lorsque j'exécute le code suivant pour stocker uniquement les tweets où les coordonnées ne sont pas nulles.Tweets avec les coordonnées Tweepy python

code:

def on_data(self, data): 

    json_object = json.loads(data) 
    if (json_object["user"]["coordinates"]!="null"): 
     f.write(data) 

Après un certain temps, je reçois une erreur qui dit

Key error:user

Quelqu'un peut-il me dire la raison pour laquelle cette erreur est survenue et quelles mesures peuvent être pris pour résoudre ou mieux comprendre cette erreur.

Répondre

2

Vous obtenez cette erreur car il n'est pas nécessaire que tous les tweets aient le champ user.

def on_data(self, data): 
    json_object = json.loads(data) 
    # next statement will short circuit if 'user' field is not found. 
    if "user" in json_object and "coordinates" in json_object["user"] and json_object["user"]["coordinates"]!="null": 
     f.write(data) 

Ou si vous voulez faire avec grâce -

def on_data(self, data): 
    try: 
     if json_object["user"]["coordinates"]!="null": 
      f.write(data) 
    except: 
     pass 
+0

alors comment puis-je faire le programme à sauter ceux dans lesquels il n'y a pas de coordonnées feilds? – user3930213

+0

@ user3930213 J'ai modifié la réponse – hashcode55

+0

Vous devez connaître les autres types de message. [DOC] (https://dev.twitter.com/streaming/overview/messages-types) – Jonas