微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一旦 X 数量的推文存储在 CSV 中,如何停止 Tweepy?

如何解决一旦 X 数量的推文存储在 CSV 中,如何停止 Tweepy?

我已经学习 Python 大约一个月了,在看了几个教程之后,我决定试一试 Tweepy,来分析提取的数据。 但问题是,无论我将 if 语句放在哪里,Tweepy 都不会停止流式传输推文。我使用的是 Python 3.9 和 Tweepy 3.10。

例如,我希望在 CSV 中存储 10 条推文后停止。

有什么想法吗?

 # Stream Listener Class
class MyListener(tweepy.StreamListener):
    def on_data(self,raw_data):
        self.num_tweets = 0
        self.file_name = 'path/tweet_stream.csv'
        self.process_data(raw_data)
        return True

    def process_data(self,raw_data):
        print(raw_data)
        with open(self.file_name,mode='a') as f:
            writer = csv.writer(f)
            writer.writerow([raw_data,'\n'])
        self.num_tweets += 1
        if self.num_tweets < 10:
            return True
        else:
            return False


# Creating the Stream
class MyStream():
    def __init__(self,auth,listener):
        self.stream = tweepy.Stream(auth=auth,listener=listener)

    def start(self,keywords):
        self.stream.filter(track=keywords)

# Starting
if __name__ == "__main__":
    listener = MyListener()

解决方法

经过相当长的时间弄乱我的代码后,我想出了一个解决方法。最终用 on_data 函数替换了 process_data(因为它更倾向于我所追求的)。

解决方法是保留构造函数,为推文创建一个空列表,并将状态 json 写入 self.file,同时附加列表。 append 方法在 self.num_tweets 计数器之前调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。