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

使用Python urllib下载图片无报错但无法打开,求排查原因

问题原因及解决方案

你的问题出在对整个URL进行了不必要的URL编码,导致请求的地址实际上是错误的,服务器返回的不是图片数据,所以下载后的文件无法打开。

具体分析:

原URL https://szaniterplaza.hu/images/itempic/Grohe_Euroeco_bidé_csaptelep_32737_000_32737000.jpg 本身就是合法的URL格式,其中的下划线、点、连字符都是URL允许的合法字符。但你用 urllib.parse.quote 处理整个URL后,会把这些合法字符也转换成百分号编码(比如下划线_会变成%5F),导致服务器无法识别这个修改后的URL,返回的内容根本不是图片,自然无法打开。

修正后的代码:

只需要去掉多余的URL编码步骤,直接使用原始URL下载即可:

import urllib.request

url = 'https://szaniterplaza.hu/images/itempic/Grohe_Euroeco_bidé_csaptelep_32737_000_32737000.jpg'
urllib.request.urlretrieve(url, './image.jpg')

补充说明:

如果以后遇到URL中确实包含特殊字符(比如中文、空格)的情况,也不要对整个URL编码,应该只编码URL的路径部分或者查询参数部分,保留协议(https://)和域名部分不变。比如可以拆分URL后单独编码路径:

from urllib.parse import quote, urlparse, urlunparse

original_url = 'https://example.com/路径含特殊字符.jpg'
parsed = urlparse(original_url)
encoded_path = quote(parsed.path)
encoded_url = urlunparse((parsed.scheme, parsed.netloc, encoded_path, parsed.params, parsed.query, parsed.fragment))
urllib.request.urlretrieve(encoded_url, './image.jpg')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:52:40