我一直在尝试使用 PIL 打开以下狗的维基百科图像。我尝试过以下方法。
from PIL import Image
import requests
from io import BytesIO
url = "https://upload.wikimedia.org/wikipedia/commons/3/36/Dog_.jpg"
response = requests.get(url)
im = Image.open(requests.get(url, stream=True).raw)
我想知道是什么原因导致了错误以及是否有任何解决方法?
如果您查看维基媒体返回给您的状态代码和页面,您会看到它报告错误,因为您没有为
User-Agent
设置合理的值,这使它认为您可能是一个狡猾的演员。
response = requests.get(url)
print(f'{response.status_code=}')
输出:
response.status_code=403
解决方案是设置一个有效的
User-Agent
:
from PIL import Image
import requests
from io import BytesIO
# Define URL and User-Agent
url = "https://upload.wikimedia.org/wikipedia/commons/3/36/Dog_.jpg"
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
# Download image
response = requests.get(url, headers=headers)
# Open with Pillow
im = Image.open(BytesIO(response.content))