2015-10-22 2 views
1

Я хотел бы распечатать твиты, в которых есть #Berlin hashtag. Как я могу переписать код? Я не могу найти коды примеров в python3 для этого действия. У меня есть следующая проблема:Python3 + Tweepy streaming ОШИБКА

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

    consumer_key = '' 
    consumer_secret = '' 
    access_token = '' 
    access_token_secret = '' 

    #This is a basic listener that just prints received tweets to stdout. 
    class StdOutListener(StreamListener): 

     def on_data(self, data): 
      print (data) 
      return (True) 

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


    if __name__ == '__main__': 

     #This handles Twitter authetification and the connection to Twitter Streaming API 
     l = StdOutListener() 
     auth = OAuthHandler(consumer_key, consumer_secret) 
     auth.set_access_token(access_token, access_token_secret) 
     stream = Stream(auth, l) 

     #This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby' 
     stream.filter(track=['Berlin']) 

А потом я получил эту ошибку в конце:

Traceback (most recent call last): 
    File "test.py", line 31, in <module> 
    stream.filter(track=['Berlin']) 
    File "/home/ubuntu/tweepy/tweepy/streaming.py", line 430, in filter 
    self._start(async) 
    File "/home/ubuntu/tweepy/tweepy/streaming.py", line 346, in _start 
    self._run() 
    File "/home/ubuntu/tweepy/tweepy/streaming.py", line 286, in _run 
    raise exception 
    File "/home/ubuntu/tweepy/tweepy/streaming.py", line 255, in _run 
    self._read_loop(resp) 
    File "/home/ubuntu/tweepy/tweepy/streaming.py", line 298, in _read_loop 
    line = buf.read_line().strip() 
    File "/home/ubuntu/tweepy/tweepy/streaming.py", line 171, in read_line 
    self._buffer += self._stream.read(self._chunk_size) 
TypeError: Can't convert 'bytes' object to str implicitly 

ответ

1

Это связано с известной ошибкой в ​​tweepy #615. Взято с поста там.

В streaming.py:

Я изменил линию 161 в

self._buffer += self._stream.read(read_len).decode('UTF-8', 'ignore') 

и линии 171 к

self._buffer += self._stream.read(self._chunk_size).decode('UTF-8', 'ignore')

Они файл, вам необходимо изменить на окнах, расположенных под \Python 3.5\Lib\site-packages\tweepy ,

Для Ubuntu вам нужно: '/usr/lib/python3.5/dist-packages/tweepy'

+0

У меня есть питон 3.4 и 2.7 и не могу найти этот путь. как я могу решить эту проблему до 2.7? @Leb – Balazs

+1

Какая у вас ОС? Это не должно иметь значения для версии python. – Leb

+0

У меня есть рабочий стол ubuntu 14.04, во всяком случае я узнал, что когда я удалил запросы на pip [security] (я установил его из-за сообщения InsecurePlatformWarning в консоли python 2.7), похоже, сейчас работает нормально. @Leb – Balazs

Смежные вопросы