python爬虫中对含中文的url处理以 及 Python3—UnicodeEncodeError 'ascii' codec can't encode characters in position

在练习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

 

 

 

posted @ 2018-04-13 16:21  秋华  阅读(1410)  评论(0编辑  收藏  举报