Tweepy无法返回完整的tweet:tweet_mode ='extended'不起作用

问题描述 投票:1回答:1

[您好,我正在尝试使用tweepy抓取某个用户的推文。这是我的代码:

tweets = []
username = 'example'
count = 140 #nb of tweets
try: 
    # Pulling individual tweets from query
    for tweet in api.user_timeline(id=username, count=count, include_rts = False):
    # Adding to list that contains all tweets
      tweets.append((tweet.text))
except BaseException as e:
      print('failed on_status,',str(e))
      time.sleep(3)

我遇到的问题是,这些推文最后都以“ ...”结尾,未完成。

我想我已经查看了堆栈溢出和其他地方的所有其他类似问题,但没有任何效果。大多数人都不关心我,因为我不处理转推

我曾尝试将tweet_mode = 'extended'和/或tweet.full_texttweet._json['extended_tweet']['full_text']放在不同的组合中。

我没有收到错误消息,但没有任何效果,返回的只是一个空列表。而且看起来文档已经过时了,因为它没有说明'tweet_mode'或'include_rts'参数:enter image description here

有人设法获得每条推文的全文吗?我真的陷在这个看似简单的问题上,并且正在掉头发,所以我很乐意提供任何建议:D提前谢谢!!

python string list twitter tweepy
1个回答
2
投票

TL; DR:您最有可能遇到限速问题。并使用full_text属性。

长版:

  1. First,

    我遇到的问题是,这些推文最后都以“ ...”结尾未完成。

    根据Extended Tweets的Tweepy文档,这是预期的:

    兼容模式

    ...也可以看出Status对象的text属性被截断,因为它的后缀是省略号]],空格和缩短的Tweet自永久链接URL。

  2. Wrt

  3. 而且看起来文档已经过时,因为它没有说明'tweet_mode'或'include_rts'参数:

    他们尚未将其显式添加到每种方法的文档中,但是,他们指定了tweet_mode is added as a param

    标准API方法

    返回状态对象的任何tweet_mode方法都接受新的tweepy.API参数。此参数的有效值为tweet_modecompat,分别提供兼容模式和扩展模式。默认模式(如果未提供任何参数)是兼容模式。

  4. 因此,没有在呼叫中添加extended的情况下,您是否得到带有部分文本的推文?有了它,您得到的只是一个空列表?如果将其删除并立即重试,请确认您仍然得到一个空白列表。即,一旦获得空列表结果,即使将参数改回有效的列表,也要检查是否仍保持空列表。

  5. 基于tweet_mode-它似乎是一个[[Rate Limiting

    问题:
    [bug #1329 - API.user_timeline sometimes returns an empty list评论Harmon758

    此API限制会完全按照您所描述的问题来体现自己。

  6. 即使它正在工作,也位于on Feb 13属性中,而不是通常的full_text。所以这行
  7. text

    应该是

    tweets.append((tweet.text))

    ((您可以跳过多余的附加tweets.append(tweet.full_text)
    


    • 顺便说一句,如果您对转发不感兴趣,请参阅()以了解处理转发的正确方法:

考虑到现有的this example对象和tweepy.API一条Tweet,以下内容可用于打印该Tweet的全文,如果是Retweet,则可打印该Tweeted Tweet的全文:

id

如果status = api.get_status(id, tweet_mode="extended")
try:
    print(status.retweeted_status.full_text)
except AttributeError:  # Not a Retweet
    print(status.full_text)
是转发,则status可能会被截断。
© www.soinside.com 2019 - 2024. All rights reserved.