【问题标题】:Having issues getting my Tweepy stream to stop让我的 Tweepy 流停止时遇到问题
【发布时间】:2019-01-05 11:12:39
【问题描述】:

一旦达到 100 条推文,我就无法退出我的信息流。我试过很多方法。希望保持“开放”的用法。

*在文件打开时使用 while 循环会导致 JSON 文件杂乱无章 *当前断开连接的使用达到 100 后继续流式传输,但数据已损坏

已编辑:

  1. 使用 self 重新创建的推文数和推文总数。
  2. 每次加载数据时,都会更新 num_tweets:self.num_tweets+=1。然后更新pbar:self.pbar.update(1)
  3. 在 try 语句之外,如果 self.num_tweets

学分: 克里斯·库克曼

def __init__(self, api=None):
        self.num_tweets = 0
        self.total_tweets = int(input("Number of tweets:"))
        self.pbar = tqdm(total=self.total_tweets)
        self.unsaved = 0
        self.emojis = 0

    def on_data(self, data):
        try:
            portal_1 = creds()
            rawTweets = json.loads(data)
            self.num_tweets += 1
            self.pbar.update(1)
            ...
            ...
        except BaseException as e:
            print(colored("Error on_data: %s", "red") % str(e))
        if self.num_tweets < self.total_tweets:
            return True
        else:
            self.pbar.close()
            return False

【问题讨论】:

    标签: python socket.io tweepy


    【解决方案1】:

    要使用 tweepy 退出流,您需要从 on_status 函数返回 false,所以如果您更改:

    if self.num_tweets < 100:
        return True
        else:
            twitter_stream.disconnect()
    

    收件人:

    if self.num_tweets < 100:
        return True
    else:
        self.pbar.close() # Closes the instance of the progress bar.
        return False # Closes the stream.
    

    这应该可以解决它。顺便说一句,每次运行时添加 self.num_tweets 以获取进度条:

    self.pbar.update(self.num_tweets)
    

    通过更新,您每次都会添加推文数量:

    推文 1 |推文数 = 的 1 |进度条 = 的 1 (1)

    推文 2 |推文数 = 的 2 |进度条 = 的 1 + 2 (3)

    推文 3 |推文数 = 的 3 |进度条 = 的 3 + 3 (6)

    从您的代码中,我假设您的意图是增加它们,所以要做到这一点,您只需将其更改为:

    self.pbar.update(1)
    

    希望这会有所帮助。

    【讨论】:

    • 成功了! :) 谢谢你,我已经被困在这个洞里好几天了!
    猜你喜欢
    • 2012-01-22
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2022-06-15
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多