我编写了一个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',
如何解决此问题?
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://”中的冒号(“:”)。