python - 如何在 Python 中找到具有非明显文件类型的 url 中的图像的文件类型
问题描述
像 googleusercontent 这样的某些 CDN 不会(显然)在其 url 中对图像的文件名进行编码,因此您无法像这里的其他答案所建议的那样简单地使用字符串操作来获取文件类型。知道这一点,怎么能说出来
是一个 gif 而
是.jpg
解决方案
基于对这个问题的回答,您可以尝试:
import requests
from PIL import Image # pillow package
from io import BytesIO
url = "your link"
image = Image.open( BytesIO( requests.get( url ).content))
file_type = image.format
不过,这需要下载整个文件。如果您希望批量执行此操作,您可能想探索上面评论中提到“魔术字节”的选项......
编辑:您还可以尝试从对您的 url 的响应的标题中获取图像类型:
headers = requests.get(url).headers
file_type =headers.get('Content-Type', "nope/nope").split("/")[1]
# Will print 'nope' if 'Content-Type' header isn't found
print(file_type)
# Will print 'gif' or 'jpeg' for your listed urls
编辑2:如果你真的只关心链接的文件类型而不是文件本身,你可以使用head
方法而不是get
请求模块的方法。它更快:
headers = requests.head(url).headers
file_type =headers.get('Content-Type', "nope/nope").split("/")[1]
推荐阅读
- vue.js - Vuex 异步/等待调度
- java - 如何使用 swagger、openapi 和生成器处理不兼容的 api 更改
- python - Selenium webdriver python无法上传文件-send_keys抛出ElementNotInteractable
- python - 重定向到 django 上的不同页面
- mongodb - 在 MongoDB 中向 $lookup 结果添加一个字段
- c++ - 在 C++ 中为我的类型为 vscode 调试器创建“可视化器”
- javascript - 如何调用 OwlCarousel react 方法
- angular - 带有异步重定向的角度路由加载
- c# - 使用简单注入器批量注册开放通用类型
- ntfs - 使用 DataRun NTFS 定位原始数据的问题