正在学习网页爬虫,用的Python3+urllib模块,当遇到链接里有中文字符的时候总是报错。之前以为是Python编码的问题,不断去尝试不同的编码去encode与decode,可以问题总是解决不了,没有办法继续查阅资料,最后发现其实解决方法特别简单。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-11: ordinal not in range(128)
最开始以为编码问题,没有解决 源代码代码如下:
import urllib
rooturl = "https://baike.baidu.com/item/"
item = "爬虫"
url = rooturl+item
print(url)
request = urllib.request.Request(url=url)
reponse = urllib.request.urlopen(request)
result = reponse.read()
result = str(result, encoding="utf-8")
print(result)
item = urllib.parse.quote(item)
但是要注意一点,只要对中文部分进行转换,如果链接全部转换也会报错:
ValueError: unknown url type: 'https%3A//baike.baidu.com/item/%E7%88%AC%E8%99%AB'
完整代码:
import urllib
rooturl = "https://baike.baidu.com/item/"
item = "爬虫"
item = urllib.parse.quote(item)
url = rooturl+item
print(url)
request = urllib.request.Request(url=url)
reponse = urllib.request.urlopen(request)
result = reponse.read()
result = str(result, encoding="utf-8")
print(result)
今天又踩了这个坑,我把它填平了,希望后来者路平摊些 谢谢观看