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

如何用Python的Tweepy从推文URL提取并下载图片、视频等媒体内容

使用Tweepy提取并下载推文的图片与视频

当然可以通过Tweepy库获取推文中的图片、视频等媒体内容,不过需要先完成Twitter API的认证(得申请开发者账号,拿到Bearer Token等凭证)。以下是具体的实现步骤:

1. 安装Tweepy

先确保你安装了最新版本的Tweepy:

pip install tweepy

2. 提取推文ID并获取媒体数据

首先从推文URL里提取推文ID——比如推文URL是https://twitter.com/xxx/status/1234567890,那ID就是1234567890。然后用Tweepy的v2 API(推荐,v1.1版本逐渐被弃用)获取推文的媒体信息:

import tweepy

# 替换成你的Bearer Token
BEARER_TOKEN = "你的Bearer Token"

# 初始化客户端
client = tweepy.Client(bearer_token=BEARER_TOKEN)

# 替换成目标推文的ID
tweet_id = "1234567890"

# 请求推文的媒体字段,展开media_keys获取详细媒体数据
response = client.get_tweet(
    tweet_id,
    expansions="attachments.media_keys",
    media_fields="type,url,variants"
)

# 整理媒体数据到字典,方便通过media_key匹配
media_map = {media.media_key: media for media in response.includes.get('media', [])}
# 获取推文里的媒体key列表
media_keys = response.data.attachments.get('media_keys', []) if hasattr(response.data, 'attachments') else []
media_list = [media_map[key] for key in media_keys if key in media_map]

3. 区分媒体类型并下载

推文里的媒体主要分图片、视频、动图三种,需要分别处理下载链接:

import requests

def save_media(media_url, save_path):
    """通用的媒体下载函数"""
    with requests.get(media_url, stream=True) as r:
        r.raise_for_status()
        with open(save_path, 'wb') as f:
            for chunk in r.iter_content(chunk_size=1024):
                f.write(chunk)

for media in media_list:
    if media.type == 'photo':
        # 图片直接取url字段
        img_path = f"{tweet_id}_pic_{media.media_key}.jpg"
        save_media(media.url, img_path)
        print(f"图片已保存:{img_path}")
    elif media.type in ['video', 'animated_gif']:
        # 视频/动图需要选比特率最高的变体(质量最好)
        valid_variants = [v for v in media.variants if 'bit_rate' in v]
        if valid_variants:
            # 按比特率降序排序,取第一个
            best_variant = sorted(valid_variants, key=lambda x: x['bit_rate'], reverse=True)[0]
            video_path = f"{tweet_id}_vid_{media.media_key}.mp4"
            save_media(best_variant['url'], video_path)
            print(f"视频/动图已保存:{video_path}")

注意事项

  • 确保你的Twitter开发者账号有足够的权限(至少需要读取推文的权限)
  • 隐私推文(用户设置了保护)的媒体无法通过API获取
  • 视频的下载链接带有临时签名,有效期不长,建议获取后立即下载
  • 遵守Twitter API的调用限制,避免频繁请求导致限流

内容的提问来源于stack exchange,提问作者Paul Johny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:35:17