这是我的代码:
import urllib.request
imglinks = ["http://www.katytrailweekly.com/Files/MalibuPokeMatt_©Marple_449-EDITED_15920174118.jpg"]
for link in imglinks:
filename = link.split('/')[-1]
urllib.request.urlretrieve(link, filename)
它给了我错误:
UnicodeEncodeError:' ascii'编解码器无法对字符' \ xa9'
进行编码
我该如何解决这个问题?我尝试使用.encode('utf-8')
,但它给了我:
TypeError:不能在类字节对象上使用字符串模式
答案 0 :(得分:1)
这里的问题不是编码本身,而是传递给'request'的正确编码。
您需要引用网址,如下所示:
import urllib.request
import urllib.parse
imglinks = ["http://www.katytrailweekly.com/Files/MalibuPokeMatt_©Marple_449-EDITED_15920174118.jpg"]
for link in imglinks:
link = urllib.parse.quote(link,safe=':/') # <- here
filename = link.split('/')[-1]
urllib.request.urlretrieve(link, filename)
这样,您的©符号就会像网络服务器一样编码为%C2%A9
。
指定safe
参数是为了防止quote
在:
之后修改http
。
由您来修改代码以使用正确的原始文件名保存文件。 ;)