zltzlt 发表于 2020-8-8 22:15:48

Python FAQ 048 urllib 访问网址报错 UnicodeEncodeError

Python FAQ 048 urllib 访问网址报错 UnicodeEncodeError

问题

为什么下面的代码会报错 UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-14: ordinal not in range(128)?

import urllib.request

response = urllib.request.urlopen("https://baike.baidu.com/item/灶门祢豆子/22390246?fr=aladdin")
html = response.read()
html = html.decode("utf-8")

print(html)

解答

urlopen() 中 URL 不能含有中文,用 urllib.parse.quote() 将中文部分转化一下即可:

import urllib.request
from urllib.parse import quote

response = urllib.request.urlopen(f"https://baike.baidu.com/item/{quote('灶门祢豆子')}/22390246?fr=aladdin")
html = response.read()
html = html.decode("utf-8")

print(html)

陈尚涵 发表于 2020-8-9 08:47:13

学爬虫的时候早会了,哈哈
页: [1]
查看完整版本: Python FAQ 048 urllib 访问网址报错 UnicodeEncodeError