当前位置: 首页 > 面试题库 >

Tweepy流媒体-停止以x数量收集推文

萧焱
2023-03-14
问题内容

我正在将X#条tweets存储在MongoDB中之后,希望Tweepy Streaming API停止提取tweets。

我已经在类中尝试了IF和WHILE语句,并用计数器定义,但是无法使其停止在一定的X量处。对我来说这真是个危险。我在以下位置找到了此链接:https
:
//groups.google.com/forum/#!topic/tweepy/5IGlu2Qiug4,
但是我复制该链接的努力失败了。它总是告诉我, init 需要一个额外的参数。我相信我们的Tweepy身份验证设置不同,所以不是苹果对苹果。

有什么想法吗?

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import json, time, sys

import tweepy
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

class StdOutListener(StreamListener):

    def on_status(self, status):
        text = status.text
        created = status.created_at
        record = {'Text': text, 'Created At': created}
        print record #See Tweepy documentation to learn how to access other fields
        collection.insert(record)


    def on_error(self, status):
        print 'Error on status', status

    def on_limit(self, status):
        print 'Limit threshold exceeded', status

    def on_timeout(self, status):
        print 'Stream disconnected; continuing...'


stream = Stream(auth, StdOutListener())
stream.filter(track=['tv'])

问题答案:

您需要在中的类中添加一个计数器__init__,然后在中添加一个计数器on_status。然后,当计数器低于20时,它将在集合中插入一条记录。可以如下所示:

def __init__(self, api=None):
    super(StdOutListener, self).__init__()
    self.num_tweets = 0

def on_status(self, status):
    record = {'Text': status.text, 'Created At': status.created_at}
    print record #See Tweepy documentation to learn how to access other fields
    self.num_tweets += 1
    if self.num_tweets < 20:
        collection.insert(record)
        return True
    else:
        return False


 类似资料:
  • 我希望Tweepy Streaming API在我将x#条推文存储在MongoDB中后停止推文。 我尝试了类内的IF和WHILE语句,用计数器定义,但不能让它停止在一定的X量。这对我来说是一个真正的爆头。我在这里找到了这个链接:https://groups.google.com/forum/#!Tweepy/5IGlu2qiug4但是我复制这个的努力失败了。它总是告诉我init需要一个额外的参数。

  • 我正在尝试使用Stream.filter()方法将twitter数据流式传输一段时间,比如5分钟。我正在将检索到的推文存储在JSON文件中。问题是我无法从程序中停止过滤器()方法。我需要手动停止执行。我尝试使用时间包根据系统时间停止数据。我能够停止向JSON文件写入推文,但流方法仍在继续,但它无法继续到下一行代码。我正在使用IPython笔记本编写和执行代码。代码如下: 这些链接是相似的,但我不会

  • 我对twitter api有意见。我使用这个脚本脚本删除推文删除推文形成一个帐户。我看到了twitepy方法(api,user_timeline) 不会返回包含媒体的推文(从网站访问推文,它们不会出现在时间线中,但会出现在另一个名为“照片和视频”的选项卡中),因此不会被删除。include_实体不是此方法的参数。 我怎样才能恢复这些推文?我以为我可以用用户名作为查询进行搜索,但那不起作用,而且效率

  • 我正在尝试使用TkinterGUI使用python/tweepy来流式传输推文。理想情况下,我会有一个启动流的“开始”按钮和一个停止流的“停止”按钮。下一个示例(来自stackoverflow)以一种简化的方式展示了我试图实现的目标: 我试图将此应用到我的代码中,开始按钮工作正常,完成了它应该做的所有事情,但停止按钮没有做任何事情。窗口没有冻结或任何东西,只是停止按钮没有效果。由于什么事也没有发生

  • 我使用这个代码: 我正在尝试访问字典中“照片”下的媒体url。但我得到了以下错误:“dict”对象没有属性“media”。如果您能帮助我浏览JSON,我将不胜感激。 提前谢谢!

  • 我是一个初学者,试图使用spark streaming获得推文,使用Scala和一些过滤器关键字。是否有可能在流媒体之后只过滤那些没有地理定位为Null的推文?我正在尝试保存ElasticSearch中的推文。所以,在将tweet地图保存到ElasticSearch之前,我可以过滤那些带有地理定位信息的地图,然后保存它们吗?我正在使用json4s.jsondsl和tweet中的字段创建JSON。这