2016-07-18 5 views
0

Python 3.5.2, Tweepy 3.5.0, Windows 8.1Warum gibt Tweepy mit Python 3 überhaupt keine Daten aus einem Stream zurück?

Ich bin ein Tutorial von Sentdex, die zeigt, wie Sie Daten von Twitter mit Tweepy streamen. (Sein Tutorial ist in Python 2, aber es ist ziemlich einfach zu Python 3-ify es)

Allerdings, wenn ich das Skript ausführen, spuckt es keine Daten aus. Es bleibt hängen, bis ich eine 3-Wege-IncompleteRead-Ausnahme erhalte, oder bis ich Strg + C tue.

Hier ist meine Zuhörer Klassencode:

class listener(StreamListener): 

    def on_date(self,data): 
     try: 
      print(data) 
      save = open('twitDB.csv', 'a') 
      save.write(data) 
      save.write('\n') 
      save.close() 
      return True 
     except BaseException as e: 
      print('failed on data,',str(e)) 
      time.sleep(5) 

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

auth = OAuthHandler(ckey, csecret) 
auth.set_access_token(atoken,asecret) 
twitterStream = Stream(auth=auth, listener=listener()) 
twitterStream.filter(track=["car"]) 

Wie Sie sehen können, habe ich es einrichten Fehler und Druckdaten aus zu fangen, während es in eine CSV speichern, aber sie nicht wirklich etwas tun , hängt einfach.

Auch für den Track, habe ich versucht, etwas weniger allgemein zu verwenden, aber es immer noch gehängt.

Wenn KeyboardInterrupt angehoben wird:

Traceback (most recent call last): 
    File "C:\Program Files\Python35\lib\site-packages\requests\packages\urllib3\co 
ntrib\pyopenssl.py", line 217, in recv_into 
    return self.connection.recv_into(*args, **kwargs) 
    File "C:\Program Files\Python35\lib\site-packages\OpenSSL\SSL.py", line 1352, 
in recv_into 
    self._raise_ssl_error(self._ssl, result) 
    File "C:\Program Files\Python35\lib\site-packages\OpenSSL\SSL.py", line 1167, 
in _raise_ssl_error 
    raise WantReadError() 
OpenSSL.SSL.WantReadError 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "twittertest.py", line 33, in <module> 
    twitterStream.filter(track=["car"]) 
    File "C:\Program Files\Python35\lib\site-packages\tweepy\streaming.py", line 4 
45, in filter 
    self._start(async) 
    File "C:\Program Files\Python35\lib\site-packages\tweepy\streaming.py", line 3 
61, in _start 
    self._run() 
    File "C:\Program Files\Python35\lib\site-packages\tweepy\streaming.py", line 2 
63, in _run 
    self._read_loop(resp) 
    File "C:\Program Files\Python35\lib\site-packages\tweepy\streaming.py", line 3 
13, in _read_loop 
    line = buf.read_line().strip() 
    File "C:\Program Files\Python35\lib\site-packages\tweepy\streaming.py", line 1 
79, in read_line 
    self._buffer += self._stream.read(self._chunk_size) 
    File "C:\Program Files\Python35\lib\site-packages\requests\packages\urllib3\re 
sponse.py", line 310, in read 
    data = self._fp.read(amt) 
    File "C:\Program Files\Python35\lib\http\client.py", line 448, in read 
    n = self.readinto(b) 
    File "C:\Program Files\Python35\lib\http\client.py", line 478, in readinto 
    return self._readinto_chunked(b) 
    File "C:\Program Files\Python35\lib\http\client.py", line 573, in _readinto_ch 
unked 
    chunk_left = self._get_chunk_left() 
    File "C:\Program Files\Python35\lib\http\client.py", line 541, in _get_chunk_l 
eft 
    chunk_left = self._read_next_chunk_size() 
    File "C:\Program Files\Python35\lib\http\client.py", line 501, in _read_next_c 
hunk_size 
    line = self.fp.readline(_MAXLINE + 1) 
    File "C:\Program Files\Python35\lib\socket.py", line 575, in readinto 
    return self._sock.recv_into(b) 
    File "C:\Program Files\Python35\lib\site-packages\requests\packages\urllib3\co 
ntrib\pyopenssl.py", line 230, in recv_into 
    [self.socket], [], [], self.socket.gettimeout()) 
KeyboardInterrupt 

Es ist mein erstes Mal mit einem Social-Media-API gehen, so dass ich entschuldige mich, wenn ich offensichtlich etwas fehlt bin. Hilfe wäre willkommen, danke.

Antwort

1
def on_date(self,data): 

Dies sollte

def on_data(self,data): 
0

Egal, wenn ich on_status mit status.text verwende, funktioniert es, muss etwas sein, das mir fehlt.

+0

waren Sie die Frage löschen können, wenn Sie wollen –