2016-12-30 8 views
0

Ich möchte arabische Daten von Twitter abrufen, mit Python3.5 und Tweepy.Abrufen arabischer Daten von Twitter

Ich finde ein Programm, das sehr gut mit der englischen oder französischen Sprache funktioniert Aber für die arabische Sprache werden die Tweets dekodiert. für exp:

\ u04f \ u04e \ u043e \ u0430 \ U0430 \ u044f

Dies ist das Programm:

from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 

ConsumerKey = 'Your_Consumer_Key' 
ConsumerSecret = 'Your_Consumer_Secret' 
AccessToken = 'Your_Access_Token' 
AccessTokenSecret = 'Your_Access_Token_Secret' 

tweets = open('Tweets.txt',mode='w',encoding="utf8",newline=None) 

class listener(StreamListener) : 

     def on_data (self , data) : 
      tweets.write(data) 
      print (data) 
      return True 

     def on_error (self , status) : 
      print (status) 

auth = OAuthHandler (ConsumerKey , ConsumerSecret) 
auth.set_access_token(AccessToken , AccessTokenSecret) 
twitterStream = Stream(auth , listener()) 
twitterStream.filter(track=['أحوال','الطقس','2016']) 
tweets.close() 

ich einige Funktionen verwendet, aber ich bekomme Fehler:

  • data.decode() ich ein Fehler AttributeError: 'str' Objekt hat kein Attribut 'decode'
  • u (Daten) I einen Fehler Nameerror erhalten: Name 'u' ist nicht definiert
  • Track = [Unicode ('2016', 'UTF-8'), Unicode (‘ الطقس‘, 'utf-8'), Unicode ('أحوال', 'utf-8')] ich einen Fehler Nameerror erhalten: Name 'Unicode' definiert ist, nicht
+0

Mit dem Programm, das Sie gepostet haben, sieht es korrekt für Python 3 aus (ich würde aber die 'newline = None' löschen). Erhalten Sie einen Fehler? Zum Beispiel begrenzt 'print' auf einer Windows-Konsole in der Regel die unterstützten Unicode-Zeichen. Daher ist es auch wichtig, Ihre Python-Version, Betriebssystem-Laufzeitumgebung (Konsole oder einige IDE) zu erwähnen und eine vollständige Rückverfolgung aller Fehler zu veröffentlichen. –

+0

@MarkTolonen Ich fand eine Lösung http://pastebin.com/v0QhbzS4 es soll funktionieren :) – Asma

Antwort

0

Dieser Code funktioniert sehr gut

from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 
import json 
import sys 

ConsumerKey = 'Your_Consumer_Key' 
ConsumerSecret = 'Your_Consumer_Secret' 
AccessToken = 'Your_Access_Token' 
AccessTokenSecret = 'Your_Access_Token_Secret' 

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) 

#tweets = open('Tweets.txt',mode='w',encoding="utf8",newline=None) 


class listener(StreamListener) : 
    def on_data (self , data): 
     try: 
      tweet = json.loads(data)['text'] 
      print(tweet.translate(non_bmp_map)) 

     except KeyError: 
      pass 

    def on_error(self , status): 
     print(status) 


auth = OAuthHandler (ConsumerKey , ConsumerSecret) 
auth.set_access_token(AccessToken , AccessTokenSecret) 
twitterStream = Stream(auth , listener()) 
twitterStream.filter(track=['الله']) 
#tweets.close()