【问题标题】:Tweepy StreamListener extended modeTweepy StreamListener 扩展模式
【发布时间】:2018-01-06 17:02:16
【问题描述】:

我当前非常简单的代码应该使用 twitter 流 API 来简单地将某个关键字下的所有推文打印到控制台中。但是我不知道如何获取推文的全文而不是截断的版本。该程序还在其他地方利用

    new_tweets = api.user_timeline(screen_name=username, count=200, tweet_mode='extended')

其中最后一个参数正是指定的。

这是我当前的代码:

class LiveTweetListener(tweepy.StreamListener):
    def on_status(self, status):
        try:
            print(status.full_text)
        except AttributeError:
            print(status.text)

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

def start_stream(track):
    Listener = LiveTweetListener()
    stream = tweepy.Stream(auth=api.auth, listener=LiveTweetListener())
    stream.filter(track=track, async=True)

使用 stream = tweepy.Stream 传递 tweet_mode='extended' 似乎不起作用

【问题讨论】:

  • 请附上当前输出和预期输出?
  • 目前在通过 tweepy 使用流时,您可以获得.text,但是当超过 140 个字符时会被截断,我正在研究是否有办法获取全文:目前@987654324 @ 显示前 137 个字符,如果推文太长,则在末尾显示 ...

标签: python twitter tweepy


【解决方案1】:

要让它工作还需要更多的逻辑。首先,将tweet_mode 添加回Stream,如下所示:

stream = tweepy.Stream(auth=api.auth, listener=LiveTweetListener(), tweet_mode='extended')

接下来,将您的 on_status 更改为如下内容:

def on_status(self, status):
    try:
        if hasattr(status, 'retweeted_status') and hasattr(status.retweeted_status, 'extended_tweet'):
            print('retweeted: ' + status.retweeted_status.extended_tweet['full_text'])
        if hasattr(status, 'extended_tweet'):
            print('extended_tweet: ' + status.extended_tweet['full_text'])
        else:
            print('text: ' + status.text)
    except AttributeError:
        print('attribute error: ' + status.text)

这就是为什么会这样:

  1. 如果原始推文被转推,status.retweeted_tweet.extended_tweet.full_text 保留文本。
  2. 如果这是扩展模式推文,您可以在status.extended_tweet.full_tweet 中找到文本。
  3. 否则,这是一条经典推文,您可以在status.text中找到文字。

虽然full_text 不显示为extended_tweet 属性,但它是JSON 有效负载的一部分(如果可用),这就是您仍然可以通过['full_text'] 访问它的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2016-11-11
    • 2018-08-13
    • 2015-07-08
    • 2021-11-23
    • 2022-10-16
    • 2022-07-21
    • 2017-09-04
    相关资源
    最近更新 更多