[英]tweepy: truncated tweets when using 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_text
或tweet._json['extended_tweet']['full_text']
放在不同的組合中。
我沒有收到錯誤消息,但沒有任何效果,只是一個空列表作為回報。 而且看起來文檔已經過時了,因為它沒有說明“tweet_mode”和“include_rts”參數:
有沒有人設法獲得每條推文的全文? 我真的被這個看似簡單的問題所困擾並且正在失去我的頭發所以我會很感激任何建議:D提前謝謝!!!
TL;DR:您很可能遇到了速率限制問題。 並使用full_text
屬性。
長版:
第一的,
我遇到的問題是推文返回時未完成,最后帶有“...”。
從關於Extended Tweets的 Tweepy 文檔中,這是預期的:
兼容模式
... 還可以看出,狀態 object 的
text
屬性被截斷,因為它將以省略號字符、空格和縮短的自我永久鏈接 URL 為后綴。
寫
而且看起來文檔已經過時了,因為它沒有說明“tweet_mode”和“include_rts”參數:
他們沒有明確地將它添加到每個方法的文檔中,但是,他們指定tweet_mode
作為參數添加:
標准 API 方法
任何返回狀態 object 的
tweepy.API
方法都接受新的tweet_mode
參數。 此參數的有效值為compat
和extended
,它們分別給出兼容模式和擴展模式。 默認模式(如果沒有提供參數)是兼容模式。
因此,如果沒有在通話中添加tweet_mode
,您是否會收到帶有部分文本的推文? 有了它,你得到的只是一個空列表? 如果您刪除它並立即重試,請確認您仍然得到一個空列表。 即,一旦你得到一個空列表結果,檢查你是否繼續得到一個空列表,即使你將參數改回有效的參數。
基於錯誤 #1329 - API.user_timeline 有時會返回一個空列表- 這似乎是一個速率限制問題:
Harmon758 於 2 月 13 日發表評論
這個 API 限制將表現為您所描述的問題。
即使它正在工作,它也在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.