Python爬虫url编码错误:UnicodeEncodeError

正在做下一个小程序的数据部分,部分数据需要从网上扒下来。从网上找到一个专门爬单词的程序,原程序的地址在这里。当然源程序一点问题都没有,在 python3 下完美运行。只不过源程序爬的是英语单词,ascii 码在 python 中就是常用字符;然而我爬取的数据中有法语特殊字符,这样就导致了下面这个问题。

下图中,当网址和正常的 ascii 字符的单词组合在一起时,能够正常地获取到数据;而当网址和特殊字符组合在一起时,便会出现错误,终止程序的运行。

具体错误如下图所示:

然后不论我怎么去改变各种变量的 encode 或者 decode 或者是从 stackoverflow 上找的一些解决方法都无济于事。甚至还有改变环境变量的,比如在系统的环境变量中加入这一条:PYTHONIOENCODING = utf-8

不过都测试过了,都没有效果。直到看到了下面这点代码,原网站查看这里首先在开头引入 from urllib import parse 以及 import urllib。然后在特殊字符变量的外面加上一个 urllib.parse.quote。

在之后的测试中还会出一些小问题,不过这个因人而异:比如,我的是每个单词换行隔开,这里会有一个隐形的换行符,%0A (LF line feed %0A),这时需要适当的加工处理了。

from urllib import parse
import urllib

key = '测试'
encoded_url = 'https://xd.sh.cn/'+urllib.parse.quote(key)+'?q='+urllib.parse.quote(key)+'&typeall=1&suball=1&timescope=custom:2017-12-15:2017-12-18&Refer=g&page='

print(encoded_url)

参考资料

updatedupdated2020-05-272020-05-27

以上是自己提供的广告