gpt4 book ai didi

python - Tweepy 没有返回完整的推文 : tweet_mode = 'extended' not working

转载 作者:行者123 更新时间:2023-12-04 12:38:52 25 4
gpt4 key购买 nike

您好,我正在尝试使用 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
提前致谢!!!

最佳答案

TL;DR:您很可能遇到了速率限制问题。并使用 full_text属性。

长版:

  • 第一的,

    The problem I am having is the tweets are coming back unfinished with "..." at the end.



    来自 Extended Tweets 上的 Tweepy 文档,这是预期的:

    Compatibility mode

    ... It will also be discernible that the text attribute of the Status object is truncated as it will be suffixed with an ellipsis character, a space, and a shortened self-permalink URL to the Tweet.



  • And It looks like the documentation is out of date because it says nothing about the 'tweet_mode' nor the 'include_rts' parameter :



    他们没有明确地将它添加到每个方法的文档中,但是,他们指定了 tweet_mode is added as a param :

    Standard API methods

    Any tweepy.API method that returns a Status object accepts a new tweet_mode parameter. Valid values for this parameter are compat and extended , which give compatibility mode and extended mode, respectively. The default mode (if no parameter is provided) is compatibility mode.

  • 所以没有 tweet_mode添加到通话中,您确实收到了带有部分文本的推文?有了它,你得到的只是一个空列表?如果您删除它并立即重试,请确认您仍然得到一个空列表。即,一旦你得到一个空列表结果,检查你是否继续得到一个空列表,即使你把参数改回有效的那个。

    基于 bug #1329 - API.user_timeline sometimes returns an empty list - 它似乎是一个 限速问题:

    Harmon758 commented on Feb 13

    This API limitation would manifest itself as exactly the issue you're describing.

  • 即使它正在工作,它也在 full_text 中属性,不是通常的 text .所以线
    tweets.append((tweet.text))

    应该
    tweets.append(tweet.full_text)

    (你可以跳过额外的封闭 () )


  • 顺便说一句,如果您对转发不感兴趣,请参阅 this example正确处理它们的方法:

    Given an existing tweepy.API object and id for a Tweet, the following can be used to print the full text of the Tweet, or if it’s a Retweet, the full text of the Retweeted Tweet:

    status = api.get_status(id, tweet_mode="extended")
    try:
    print(status.retweeted_status.full_text)
    except AttributeError: # Not a Retweet
    print(status.full_text)

    If status is a Retweet, status.full_text could be truncated.

  • 关于python - Tweepy 没有返回完整的推文 : tweet_mode = 'extended' not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61511121/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com