如何使用requests获取Clearbit API的Logo并直接渲染为图片
解决Clearbit Logo API返回内容渲染为图片的问题
Clearbit的Logo API返回的是图片二进制数据,不是文本内容,你当前用response.text获取的是二进制转字符串后的乱码内容。要渲染成图片,需要处理二进制响应内容,以下是几种可行方案:
方案1:保存为本地图片文件
直接将二进制内容写入本地文件,生成可查看的图片:
import requests url = "https://logo.clearbit.com/shopify.com" response = requests.get(url) # 验证请求是否成功 if response.status_code == 200: with open("shopify_logo.png", "wb") as file: file.write(response.content) print("Logo已保存为 shopify_logo.png") else: print(f"请求失败,状态码:{response.status_code}")
- 用
wb(二进制写入)模式打开文件,写入response.content(二进制响应体)即可生成正常图片。
方案2:在Python中直接显示图片
借助Pillow库直接在本地打开图片:
- 先安装依赖:
pip install pillow
- 运行以下代码:
import requests from PIL import Image from io import BytesIO url = "https://logo.clearbit.com/shopify.com" response = requests.get(url) if response.status_code == 200: # 将二进制内容转为内存中的文件对象 img_buffer = BytesIO(response.content) logo_img = Image.open(img_buffer) logo_img.show() else: print(f"请求失败,状态码:{response.status_code}")
BytesIO将二进制内容包装成类文件对象,供Pillow读取并显示。
方案3:在Jupyter Notebook中直接渲染
如果使用Jupyter环境,可通过内置工具直接显示图片:
import requests from IPython.display import Image url = "https://logo.clearbit.com/shopify.com" response = requests.get(url) if response.status_code == 200: display(Image(response.content)) else: print(f"请求失败,状态码:{response.status_code}")
内容的提问来源于stack exchange,提问作者Sushmitha Krishnan
相关产品推荐
相关产品推荐

