Python Tweepy不返回完整tweet:tweet#u模式=';扩展的';不起作用

Python Tweepy不返回完整tweet:tweet#u模式=';扩展的';不起作用,python,string,list,twitter,tweepy,Python,String,List,Twitter,Tweepy,你好,我正在尝试使用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 tha

你好,我正在尝试使用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\u mode='extended'
和/或
tweet.full\u text
tweet.\u json['extended\u tweet']['full\u text']
放在不同的组合中

我没有收到错误消息,但没有任何效果,只是返回一个空列表。 而且文档似乎已经过时,因为它没有提到“tweet\u mode”或“include\u rts”参数:

有没有人能获得每条推文的全文??我真的被这个看似简单的问题困住了,我的头发掉了,所以我很感激任何建议:D
提前感谢

TL;博士:你很可能遇到了一个利率限制问题。并使用
全文
属性

长版本:

  • 首先,

    我遇到的问题是,推特返回时未完成结尾处的“…”

    根据上的Tweepy文档,预计:

    兼容模式 。。。还可以看出,状态对象的
    文本
    属性被截断,因为它的后缀是省略号
    、空格和指向Tweet的缩短自对齐URL

  • Wrt

    而且文档似乎已经过时,因为它没有提到“tweet\u mode”或“include\u rts”参数:

    他们没有明确地将其添加到每个方法的文档中,但是,他们指定:

    标准API方法 任何返回状态对象的
    tweepy.API
    方法都接受一个新的
    tweet\u模式
    参数。此参数的有效值为
    compat
    extended
    ,分别给出兼容模式和扩展模式。默认模式(如果未提供参数)为兼容模式

  • 因此,如果不在通话中添加
    tweet\u模式
    ,您会收到部分文本的tweet吗?有了它,你得到的只是一张空名单?如果您删除它并立即重试,请验证您仍然得到一个空列表。也就是说,一旦你得到一个空列表结果,检查你是否一直得到一个空列表,即使你把参数改回工作状态

    基于-这似乎是一个利率限制问题:

    评论

    这个API限制将表现为您所描述的问题

  • 即使它在工作,它也在
    全文
    属性中,而不是通常的
    文本
    。那么这条线呢

    tweets.append((tweet.text))
    
    应该是

    tweets.append(tweet.full_text)
    
    (并且您可以跳过额外的封装
    ()


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

      给定Tweet的现有
      tweepy.API
      对象和
      id
      ,可以使用以下内容打印Tweet的全文,或者如果是转发,则打印转发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)
      
      如果
      status
      是转发,
      status.full\u text
      可能会被截断


    根据twitter API v2:


    tweet_模式根本不起作用。您需要添加
    expansions=referenced_tweets.id
    。然后在响应中,搜索
    包括
    。您可以在includes中找到所有被截断的tweet作为完整tweet。您仍然可以在数据中看到被截断的tweet,但不用担心。

    谢谢您,这是一个非常完整的答案,我将查看所有这些内容并与您联系!我认为您可能是对的,因为它是一个API限制(我并不完全理解这个概念)。我又试了一次,似乎两者都能用。全文和tweet\u mode='extended'。但随着更多的测试,它返回一个空列表。我真的不明白如何解决这个问题……这不是一个你可以“解决”的问题。Twitter限制了您的数据挖掘/ddos攻击。请在此处阅读更多相关信息:。由于您处于15分钟的时间段中,最快的解决方法是在所有操作之前启动一个计时器,当您第一次收到空列表响应时,在发送下一个请求之前等待剩余的15分钟。TBH,这是一个相当愚蠢的解决方案。不幸的是,Tweepy似乎不允许您访问包含该信息的响应头。因此,您无法检查页面上提到的内容。或者……或者,您可以使用包含利率限制检查的,尽管可能具有相同的限制。啊,好的,谢谢,我理解得更好。我可以试试流媒体!