You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:45:18