【问题标题】:Tweepy StreamListener "def on_status" not executingTweepy StreamListener“def on_status”未执行
【发布时间】:2018-08-13 20:30:08
【问题描述】:

我有以下代码来创建一个 Stream Listener 并从 Twitter API 获取推文。

class MyStreamListener(tweepy.StreamListener):

    #class constructor
    def __init__(self,api=None):

        super(MyStreamListener,self).__init__()

        #creates class variables and instantiates to file and number
        self.num_tweets = 0
        self.file = open("tweets.txt",'w') 

    #function to collect tweets and add to file    
    def on_status (self,status):
        tweet = status._json
        print("Tweet: " + tweet)
        print("STATUS: " + status.text)
        self.file.write(json.dumps(tweet)+'\n')

        print(status)
        self.num_tweets+=1

        if self.num_tweets < 100:
            return True
        else:
            return False
        self.file.close()

l = MyStreamListener()
stream = tweepy.Stream(auth,l)

stream.filter(track=[])  

虽然此代码没有错误,但程序不会像行中的投影输出那样打印任何内容

print("Tweet: " + tweet)
print("STATUS: " + status.text)  

我已尝试调整线路

stream.filter(track=[]) 

包括

stream.filter(track=['trump','clinton'])

但我仍然没有收到任何输出。

请提供有关此问题发生原因或可能解决方案的帮助。

编辑:未来的调试表明 on_status 函数在任何时候都没有运行,尽管 tweepy docs. 中显示了这一点

【问题讨论】:

    标签: python tweepy


    【解决方案1】:

    如果您想使用 Tweepy 的 StreamListener 仅通过 trump 或 clinton 之类的关键字过滤推文,我认为您最好重写 on_data 方法。您应该会收到预期的数据。

    我会仔细检查一下,但他们的 docs 似乎已关闭?

    【讨论】:

    • 好的,我试试on_data方法。
    【解决方案2】:

    为什么不使用json.loads() 函数来获取所有数据呢?这提供了一种更好的工作格式:

    def on_status (self, status):
        all_data = json.loads(status)
        tweet = all_data['text']
        print("Tweet: " + tweet)
        print("STATUS: " + all_data + '\n')
        self.file.write(tweet) + '\n')
    

    现在您的状态为all_data 中的字典格式,您可以访问该状态以查找推文和所有其他变量。

    【讨论】:

    • 是的,但是 print() 调用没有显示在控制台中,我在def on_status (self, status): 行设置了一个断点,并且断点也从未发生过。
    【解决方案3】:

    问题似乎出在不正确的访问密钥上,错误代码由于某种原因没有打印出来。我通过重写类并使用新密钥创建新的流应用程序解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 1970-01-01
      • 2020-03-26
      • 2016-11-11
      • 2018-01-06
      • 2015-07-08
      • 2017-09-04
      • 2015-09-12
      • 2022-10-16
      相关资源
      最近更新 更多