2016-12-30 8 views
0

Я хочу получить арабские данные от Twitter, используя Python3.5 и Tweepy.Извлечь арабские данные из Twitter

Я нахожу программу, которая очень хорошо работает с английским или французским языком. Но для арабского языка твиты декодируются. для ехра:

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

Это программа:

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

Я использовал некоторые функции, но я получаю ошибки:

  • data.decode() я получаю ошибка AttributeError: объект 'str' не имеет атрибута 'decode'
  • и (данные) я получаю ошибку NameError: имя 'и' не определен
  • дорожки = [UNICODE ('2016', 'UTF-8'), Unicode (» الطقس», 'UTF-8'), юникод ('أحوال', 'UTF-8')] Я получаю сообщение об ошибке NameError: имя 'юникода' не определен
+0

С программой, которую вы отправили, она выглядит правильно для Python 3 (я бы сбросил 'newline = None'). Вы получили сообщение об ошибке? Например, 'print' на консоли Windows обычно ограничивает поддерживаемые символы Unicode, поэтому важно также упомянуть вашу версию Python, ОС, среду выполнения (консоль или некоторую среду IDE) и полностью отслеживать любые ошибки. –

+0

@MarkTolonen Я нашел решение http://pastebin.com/v0QhbzS4, он должен работать :) – Asma

ответ

0

Этот код работает очень скважина

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