簡體   English   中英

為什么使用Python 3的Tweepy根本不從流返回任何數據?

[英]Why does Tweepy with Python 3 not return any data at all from a stream?

Python 3.5.2,Tweepy 3.5.0,Windows 8.1

我正在跟蹤senddex制作的教程,該教程顯示了如何使用tweepy從Twitter流數據。 (他的教程在Python 2中,但是使用Python 3對其進行修飾很容易)

但是,當我運行腳本時,它不會吐出任何數據。 它掛起,直到我收到三向IncompleteRead異常,或者直到執行Ctrl + C為止。

這是我的偵聽器類代碼:

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"]) 

如您所見,我將其設置為捕獲錯誤並在將數據保存到csv的同時打印出數據,但實際上並沒有執行任何操作,只是掛起了。

另外,為了跟蹤,我確實嘗試使用了一些不太通用的東西,但是它仍然掛死了。

引發KeyboardInterrupt時:

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

這是我第一次使用社交媒體API,因此如果我遺漏了一些明顯的東西,我深表歉意。 幫助將不勝感激,謝謝。

def on_date(self,data):

這應該是

def on_data(self,data):

沒關系,當我將on_status與status.text一起使用時,它確實有效,一定是我所缺少的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM