如何使用Python通过链接下载Tenor GIF动图
解决Tenor及普通GIF链接的统一下载问题
问题说明
我使用以下代码下载GIF:
import requests url = 'GIF-URL' with open('downloaded.gif', 'wb') as f: f.write(requests.get(url).content)
这段代码对普通GIF链接有效,但无法下载Tenor的GIF。试过Tenor API(无通过链接直接下载的端点)、urllib.request和wget.download()都不行,现有tenor-dl库仅支持终端使用,需要代码实现的方案,能同时处理Tenor链接(如https://tenor.com/view/thumbs-up-double-thumbs-up-like-agreed-yup-gif-11663223)和普通GIF链接。
解决方案
Tenor网页URL返回的是HTML页面而非GIF内容,核心思路是解析页面HTML提取真实的GIF源地址,再统一执行下载操作。
实现步骤
- 区分链接类型:判断是否为Tenor链接
- 解析Tenor页面:用HTML解析工具提取页面中的GIF真实地址
- 统一下载:对提取到的真实GIF地址或普通GIF链接执行下载保存
代码实现
首先安装依赖库:
pip install beautifulsoup4
完整代码:
import requests from bs4 import BeautifulSoup def download_gif(url, save_path='downloaded.gif'): # 定义请求头,避免被反爬拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } # 处理Tenor链接 if 'tenor.com/view' in url: # 获取页面HTML内容 page_response = requests.get(url, headers=headers) soup = BeautifulSoup(page_response.text, 'html.parser') # 尝试从img标签提取GIF地址 gif_img = soup.find('img', class_='Gif') if gif_img: gif_url = gif_img['src'] else: # 备用:从video标签的source提取地址 video_tag = soup.find('video', class_='Gif') if not video_tag or not video_tag.find('source'): raise ValueError("无法从Tenor页面提取GIF源地址") gif_url = video_tag.find('source')['src'] # 下载GIF gif_response = requests.get(gif_url, headers=headers) else: # 处理普通GIF链接 gif_response = requests.get(url, headers=headers) # 保存文件 with open(save_path, 'wb') as f: f.write(gif_response.content) print(f"GIF已成功保存至:{save_path}") # 测试示例 if __name__ == '__main__': # 测试Tenor链接 tenor_gif_url = 'https://tenor.com/view/thumbs-up-double-thumbs-up-like-agreed-yup-gif-11663223' download_gif(tenor_gif_url, 'double_thumbs_up.gif') # 测试普通GIF链接(替换为实际有效链接) normal_gif_url = 'https://i.imgur.com/example.gif' download_gif(normal_gif_url, 'normal_example.gif')
代码说明
- 添加
User-Agent请求头,避免被Tenor的反爬机制拦截 - 优先从class为
Gif的img标签提取地址,若失败则从video标签的source节点提取(适配Tenor不同的资源加载方式) - 函数自动识别链接类型,统一处理下载逻辑,无需区分调用
内容的提问来源于stack exchange,提问作者Baby Yoda
相关产品推荐
相关产品推荐

