2016-12-30 1 views
0

Je souhaite récupérer des données en arabe à partir de Twitter, en utilisant Python3.5 et Tweepy.Récupérer des données en arabe à partir de Twitter

Je trouve un programme qui fonctionne très bien avec la langue anglaise ou française Mais pour la langue arabe, les tweets sont décodés. pour exp:

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

Voici le programme:

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() 

je certaines fonctions, mais je reçois des erreurs:

  • data.decode() que je reçois une erreur AttributeError: l'objet 'str' n'a pas d'attribut 'decode'
  • u (données) j'obtenir une erreur NameError: nom 'u' est pas défini
  • piste = [unicode ('2016', 'utf-8'), unicode (» الطقس », 'utf-8'), unicode ('أحوال', 'utf-8')] Je reçois une erreur NameError: nom 'unicode' est pas défini
+0

Avec le programme que vous avez posté, il semble correct pour Python 3 (je laisserais tomber le 'newline = None', cependant). Avez-vous une erreur? Par exemple, 'print' sur une console Windows limite généralement les caractères Unicode pris en charge, il est donc important de mentionner votre version Python, votre système d'exploitation, votre environnement d'exécution (console ou IDE) et d'afficher une trace complète des erreurs. –

+0

@ MarkTolonen J'ai trouvé une solution http://pastebin.com/v0QhbzS4 c'est supposé fonctionner :) – Asma

Répondre

0

Ce code fonctionne très bien

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()