已经我的url为:http://map.baidu.com/?newmap=1&s=con%26wd%3D阿坝师范高等专科学校%26c%3D185&from=alamap&tpl=mapdots
但是使用urllib中的quote方法编码后的结果为:http%3A//map.baidu.com/%3Fnewmap%3D1%26s%3Dcon%2526wd%253D%E9%98%BF%E5%9D%9D%E5%B8%88%E8%8C%83%E9%AB%98%E7%AD%89%E4%B8%93%E7%A7%91%E5%AD%A6%E6%A0%A1%2526c%253D185%26from%3Dalamap%26tpl%3Dmapdots
即:quote对其他字符也进行了编码。
问:如何只对url中的中文编码?
大家讲道理2017-04-17 13:24:39
>>> from urllib.parse import *
>>> url = 'http://map.baidu.com/?newmap=1&s=con%26wd%3D阿坝师范高等专科学校%26c%3D185&from=alamap&tpl=mapdots'
>>> import string
>>> quote(url, safe=string.printable)
'http://map.baidu.com/?newmap=1&s=con%26wd%3D%E9%98%BF%E5%9D%9D%E5%B8%88%E8%8C%83%E9%AB%98%E7%AD%89%E4%B8%93%E7%A7%91%E5%AD%A6%E6%A0%A1%26c%3D185&from=alamap&tpl=mapdots'
黄舟2017-04-17 13:24:39
先unquote
再quote
就好了。
import urllib
print urllib.quote_plus( urllib.unquote_plus( "http://map.baidu.com/?newmap=1&s=con%26wd%3D阿坝师范高等专科学校%26c%3D185&from=alamap&tpl=mapdots" ) )
阿神2017-04-17 13:24:39
import urllib
base_Url = "http://map.baidu.com/?newmap=1&s=con%26wd%3D"
cn_Url= urllib.parse.quote("阿坝师范高等专科学校")
final_Url = base_Url+cn_Url+"%26c%3D185&from=alamap&tpl=mapdots"