2016-12-30 105 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()