使用Tweepy与Python获取推文内全部图片URL(非仅首张)
解决Tweepy获取推文多张图片URL的问题
嘿,我明白你的问题了——你的脚本现在只能拿到单条推文里的首张图片,没法获取同一条里的其他图片对吧?这是因为你没遍历推文里的所有媒体项,只取了第一个!
问题根源
Twitter API返回的推文entities里的media是一个列表,每条推文里的每张图片(或其他媒体)都是这个列表里的一个元素。如果你的代码只取了列表的第一个元素(比如media[0]),那自然只能拿到首张图片。
修正后的代码片段
这里给你调整后的代码,能把同一条推文里的所有图片URL都收集到imagesfiles列表里:
timeline = tweepy.Cursor(api.user_timeline, tweet_mode='extended').items() for tweet in timeline: imagesfiles = [] # 存储当前推文的所有图片URL # 检查推文是否包含媒体内容 if 'media' in tweet.entities: # 遍历所有媒体项 for media in tweet.entities['media']: # 只筛选图片类型的媒体(排除视频、GIF等) if media['type'] == 'photo': # 添加HTTPS格式的图片URL到列表(比HTTP更安全) imagesfiles.append(media['media_url_https']) # 测试输出:看看当前推文收集到了多少张图片 if imagesfiles: print(f"推文ID {tweet.id} 包含 {len(imagesfiles)} 张图片:") for url in imagesfiles: print(f"- {url}") else: print(f"推文ID {tweet.id} 没有图片")
关键说明
- 遍历media列表:通过
for media in tweet.entities['media']循环,逐个处理每条推文里的所有媒体对象。 - 类型判断:加上
media['type'] == 'photo'可以确保只收集图片,不会把视频、动图的URL混进来。 - HTTPS链接:用
media_url_https代替media_url,避免HTTP链接的安全问题。
这样修改后,你的imagesfiles列表就能存储单条推文里的所有图片URL了,后续下载的时候遍历这个列表就能把所有图片都下载下来啦!
内容的提问来源于stack exchange,提问作者the_t_test_1
相关产品推荐
相关产品推荐

