ReadTimeoutError:Twitter流API

2024-10-06 12:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到一些关于攻击性狗的推文。我的关键字在代码中指定。他们都提到德国牧羊人(西班牙语中的“阿莱曼牧师”)。 例如,在其他的tweets中,我希望得到this one完全符合关键字,并于2015年2月23日发布。 我执行了下面给定的代码,在等待大约1小时后,出现了以下错误:

requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='stream.twitter.com', port=443): Read timed out.

端口443似乎有问题。如何解决这个问题?

另外,代码可以很好地处理“python,javascript”这样的关键字。

更新: 我注意到,如果我用英语写关键字,代码会检索一些tweets,比如“德语shepherd aggressive”。但随后我收到另一条错误消息:

socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host

我的代码:

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

CONSUMER_KEY = "..."
CONSUMER_SECRET = "..."
ACCESS_TOKEN = "..."
ACCESS_TOKEN_SECRET = "..."

class listener(StreamListener):

    def on_data(self, data):
        try:
            print data
            saveFile = open('raw_tweets.json', 'a')
            saveFile.write(data)
            saveFile.write('\n')
            saveFile.close()
            return True

        except BaseException, e:
            print 'failed ondata,', str(e)
            time.sleep(10)
            pass

    def on_error(self, status):
        print status
        if status == 420:
            return False


if __name__ == '__main__':
    auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    stream = Stream(auth, listener())

    keywords = ['pastor aleman agresivo','pastor aleman muerde',
                'pastor aleman mata','pastor aleman muerte',
                'pastor aleman peligroso','pastor aleman peligro',
                'pastor aleman adiestramiento']
    stream.filter(track=keywords)

Tags: 代码fromimporttokendatastreamsecretaccess
1条回答
网友
1楼 · 发布于 2024-10-06 12:32:47

捕获这些错误并重新启动流。这些错误是正常的。连接可能会由于一些你无法控制的原因而中断。此外,如果90秒后没有活动,Twitter将关闭连接。

编辑: 有人用tweepy发布了一个example,它做了一些与你需要的类似的事情。

相关问题 更多 >