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

问题描述 投票:0回答:1

我编写了一个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)

我认为图像网址有问题

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

如何解决此问题?

python python-3.x unicode python-unicode
1个回答
0
投票

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://”中的冒号(“:”)。

© www.soinside.com 2019 - 2024. All rights reserved.