如何使用rtweet获取推文的图片描述文本?
如何用rtweet获取推文的图片描述文本
可以获取推文的图片描述文本(即媒体替代文本),只是rtweet的get_timeline默认解析后的数据集没有直接暴露这个字段——因为图片alt文本嵌套在Twitter API返回的媒体实体深层结构里,默认解析逻辑没有提取它。
解决步骤
- 获取未解析的原始API数据:调用
get_timeline时设置parse = FALSE,拿到Twitter API返回的原始JSON结构数据。 - 提取嵌套的alt文本字段:从原始数据的
extended_entities -> media -> alt_text路径中提取图片描述。
示例代码
library(rtweet) library(purrr) # 获取单条未解析的原始推文数据 last_tweet_unparsed <- rtweet::get_timeline(user = 'esquinadobrasil', n = 1, parse = FALSE) # 提取这条推文的图片描述文本 if (!is.null(last_tweet_unparsed[[1]]$extended_entities$media)) { media_alt_text <- map_chr(last_tweet_unparsed[[1]]$extended_entities$media, ~.x$alt_text) print(media_alt_text) } else { cat("这条推文没有图片或未设置图片描述") } # 批量获取推文并提取所有图片描述 tweets_unparsed <- rtweet::get_timeline(user = 'esquinadobrasil', n = 10, parse = FALSE) all_alt_text <- map(tweets_unparsed, function(tweet) { if (!is.null(tweet$extended_entities$media)) { map_chr(tweet$extended_entities$media, ~.x$alt_text) } else { NA_character_ } }) # 整理成结构化数据框 tweet_alt_df <- data.frame( tweet_id = map_chr(tweets_unparsed, ~.x$id_str), alt_text = unlist(all_alt_text) ) head(tweet_alt_df)
补充说明
- 只有当推文的图片主动设置了替代文本时,
alt_text字段才会存在;未设置的话该字段会缺失,需要提前做空值判断。 - 如果单条推文包含多张图片,每张图片的alt文本会单独返回,可根据需求选择合并或单独存储。
内容的提问来源于stack exchange,提问作者rafa.pereira
相关产品推荐
相关产品推荐

