urlretrieve 的问题无法从 url 获取包含 unicode 字符串的图像

problem of urlretrieve cannot get image from url contains unicode string

我编写了一个 python 脚本来从 url:

中检索图像
url = `https://uploads0.wikiart.org/images/albrecht-durer/watermill-at-the-montaсa.jpg`
urllib.request.urlretrieve(url, STYLE_IMAGE_UPLOAD + "wikiart" + "/" + url)

当我运行收到消息时

UnicodeEncodeError: 'ascii' codec can't encode character '\u0441' in position 49: ordinal not in range(128)

从图片上我觉得有问题url

'https://uploads0.wikiart.org/images/albrecht-durer/watermill-at-the-monta\u0441a.jpg',

如何解决这个问题?

URL 包含非 ASCII 字符(看起来像拉丁文 "c" 的西里尔字母)。

使用 urllib.parse.quote 函数转义此字符:

url = 'https://uploads0.wikiart.org' + urllib.parse.quote('/images/albrecht-durer/watermill-at-the-montaсa.jpg')
urllib.request.urlretrieve(url, '/tmp/watermill.jpg')

不要将整个URL放在quote函数中,否则会转义"https://".

中的冒号(“:”)