2016-08-08 27 views
0

Ich verwende derzeit Tweepy, um Daten mit Streaming API zu sammeln.Twitter Streaming in Python: cp949 codec

Hier ist mein Code und ich habe dies auf Acaconda Eingabeaufforderung ausgeführt. Wenn das Streaming beginnt, gibt es Tweets und dann nach wenigen Tweets zu geben gibt es folgende Fehlermeldung:

Streaming Started ... 
RT @ish10040: Crack Dealer Released Early From Prison By Obama Murders Woman And Her 2 Young Kids… Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "C:\Users\Jae Hee\Anaconda2\lib\threading.py", line 801, in __bootstrap_inner 
    self.run() 
    File "C:\Users\Jae Hee\Anaconda2\lib\threading.py", line 754, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "C:\Users\Jae Hee\Anaconda2\lib\site-packages\tweepy\streaming.py", line 294, in _run 
    raise exception 
UnicodeEncodeError: 'cp949' codec can't encode character u'\xab' in position 31: illegal multibyte sequence 

Ich glaube, dass es mit Codierung zu tun hat, so dass ich chcp 65001 verwendet, um mit diesem Thema zu befassen, aber es gibt nicht die Lösung!

Hier ist der Code

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 

api = tweepy.API(auth) 


class MyStreamListener(tweepy.StreamListener): 

    def on_status(self, status): 
     print(status.text) 

    def on_error(self, status_code): 
     #returning False in on_data disconnects the stream 
     if status_code == 420: 
      return False 

def main(): 

    myStreamListener = MyStreamListener() 
    myStream = tweepy.Stream(auth = api.auth, listener = myStreamListener) 


    print "Streaming Started ..." 

    try: 
     myStream.filter(track=['Obama'], async = True) 
    except: 
     print "error!" 
     myStream.disconnect() 

if __name__ == '__main__': 
    main() 

Antwort

0

Alle Texte produziert und durch das Twitter-API akzeptiert sollten als UTF-8 codiert werden, so dass Ihr Code sollte das Codec verwenden zu entschlüsseln, was zurück kommt.

Siehe hier: https://dev.twitter.com/overview/api/counting-characters

+0

für den Track-String funktioniert Ich habe sogar versucht u'Obama‘verwenden, aber immer noch nicht. Ich weiß, dass ich UTF-8 verwenden muss, also habe ich chcp 65001 gemacht, funktioniert aber immer noch nicht. – user1917231