from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
ckey=''
csecret=''
atoken=''
asecret=''
class listener(StreamListener):
def on_data(self,data):
print(data)
return True
def on_error(self,status):
print(status)
auth = OAuthHandler(ckey,csecret)
auth.set_access_token(atoken, asecret)
twitterStream = Stream(auth, listener())
twitterStream.filter(track="cricket")
此代码根据过滤器过滤推特流。但是我在运行代码后得到跟踪回溯。有人可以帮忙吗
Traceback (most recent call last):
File "lab.py", line 23, in <module>
twitterStream.filter(track="car".strip())
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 430, in filter
self._start(async)
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 346, in _start
self._run()
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 286, in _run
raise exception
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 255, in _run
self._read_loop(resp)
File "C:\Python34\lib\site-packages\tweepy\streaming.py", line 298, in _read_loop
line = buf.read_line().strip()
File "C:\Python34\lib\site-packages\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
答案 0 :(得分:1)
我假设您正在使用tweepy 3.4.0。您提出的问题是“开放”问题。在github上(https://github.com/tweepy/tweepy/issues/615)。
两种解决方法:
<强> 1)强> 在streaming.py中:
我将第161行更改为
self._buffer + = self._stream.read(read_len).decode(&#39; UTF-8&#39;,&#39;忽略&#39;)
和第171行到
self._buffer + = self._stream.read(self._chunk_size).decode(&#39; UTF-8&#39;,&#39;忽略&#39;)
然后通过python3 setup.py install重新安装在我本地的tweepy副本上。
<强> 2)强> 删除tweepy 3.4.0模块,并使用命令安装3.3.0: pip install -I tweepy == 3.3.0
希望有所帮助,
-A
答案 1 :(得分:0)
你不能twitterStream.filter(track="car".strip())
。为什么要添加strip()
,因为它没有任何用处。
track
必须为str
类型,tweepy
因为您尝试添加而阻止了该连接strip()
如果由于某种原因你需要它,你可以track_word='car'.strip()
然后track=track_word
,这甚至是不必要的,因为:
>>> print('car'.strip())
car
此外,您获得的错误与您列出的代码不符,您问题中的代码应该可以正常运行。