2016-12-30 75 views
0

我想從Twitter檢索阿拉伯數據,使用Python3.5Tweepy從Twitter檢索阿拉伯數據

我發現一個程序,與英語或法語很好的工作,但對於阿拉伯語言的推文是解碼。 爲EXP:

\ 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'對象沒有屬性'解碼'
  • U(數據)我得到一個錯誤NameError:名 'U' 未定義
  • 軌道= [unicode的( '2016', 'UTF-8'),unicode的(」 الطقس」, 'UTF-8'),統一( 'أحوال', 'utf-8')]我得到一個錯誤NameError:名字 'unicode' 時沒有定義
+0

隨着你發佈的程序,它看起來正確的Python 3(雖然我會刪除'newline = None')。你有錯誤嗎?例如,Windows控制檯上的'print'通常會限制所支持的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()