在练习urllib操作中,遇到了url中含有中文字符的问题。比如http://dotamax.com/,看下源码的话,上方的搜索框的name=p,输入内容点击搜索以后,通过GET方法进行传递,比如我们搜索”意“,url变为http://dotamax.com/search/?q=意。但是url中是不允许出现中文字符的,这时候就改用urllib.parse.quote方法对中文字符进行转换。
url = "http://dotamax.com/"
search = "search/?q=" + urllib.parse.quote("意")
html = urllib.request.urlopen(url + search)
这样就可以正常获取页面了。
需要注意的是不能对整个url调用quote方法。
print(urllib.parse.quote("http://dotamax.com/search/?q=意"))
上面代码输出结果:
http%3A//dotamax.com/search/%3Fq%3D%E6%84%8F
可以看到,' : ', ' ? ', ' = '都被解码,因此需要将最后的中文字符部分调用quote方法后接在后面。
但是还有更方便的方法:
import urllib.parse b = b'/:?='
print(urllib.parse.quote("http://dotamax.com/search/?q=意", b))
输出结果为:
http://dotamax.com/search/?q=%E6%84%8F
原文:https://blog.csdn.net/ice4026/article/details/35866851