簡體   English   中英

Tweepy 沒有返回完整的推文:tweet_mode = 'extended' 不起作用

[英]Tweepy not returning full tweet: tweet_mode = 'extended' not working

您好,我正在嘗試使用 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”參數: 在此處輸入圖像描述

有沒有人設法獲得每條推文的全文? 我真的被這個看似簡單的問題所困擾並且正在失去我的頭發所以我會很感激任何建議:D提前謝謝!!!

TL;DR:您很可能遇到了速率限制問題。 並使用full_text屬性。

長版:

  1. 第一的,

    我遇到的問題是推文返回時未完成,最后帶有“...”。

    從關於Extended Tweets的 Tweepy 文檔中,這是預期的:

    兼容模式

    ... 還可以看出,狀態 object 的text屬性被截斷,因為它將以省略號字符、空格和縮短的自我永久鏈接 URL 為后綴

  2. 而且看起來文檔已經過時了,因為它沒有說明“tweet_mode”和“include_rts”參數:

    他們沒有明確地將它添加到每個方法的文檔中,但是,他們指定tweet_mode作為參數添加

    標准 API 方法

    任何返回狀態 object 的tweepy.API方法都接受新的tweet_mode參數。 此參數的有效值為compatextended ,它們分別給出兼容模式和擴展模式。 默認模式(如果沒有提供參數)是兼容模式。

  3. 因此,如果沒有在通話中添加tweet_mode ,您是否會收到帶有部分文本的推文? 有了它,你得到的只是一個空列表? 如果您刪除它並立即重試,請確認您仍然得到一個空列表。 即,一旦你得到一個空列表結果,檢查你是否繼續得到一個空列表,即使你將參數改回有效的參數。

    基於錯誤 #1329 - API.user_timeline 有時會返回一個空列表- 這似乎是一個速率限制問題:

    Harmon758 於 2 月 13 日發表評論

    這個 API 限制將表現為您所描述的問題。

  4. 即使它正在工作,它也在full_text屬性中,而不是通常的text 所以這條線

    tweets.append((tweet.text))

    應該

    tweets.append(tweet.full_text)

    (你可以跳過額外的封閉()


  • 順便說一句,如果您對轉發不感興趣,請參閱 此示例以了解處理它們的正確方法:

    給定現有的tweepy.API object 和 Tweet 的id ,以下可用於打印 Tweet 的全文,或者如果它是 Retweet,則為 Retweet 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_text可能會被截斷。

根據 twitter API v2:

tweet_mode根本不起作用。 您需要添加expansions=referenced_tweets.id 然后在響應中,搜索includes 您可以在包含中找到所有截斷的推文作為完整推文。 您仍然會看到被截斷的推文作為回應,但不要擔心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM