在涉及到http的编程过程中,很容易遇到url编码问题和url解析的需求, url编码和url解码总是成对出现,对于url的解析,可以使用urllib.parse模块的urlparse函数
在浏览器里打开下面这个网址
https://baike.baidu.com/item/URL%E7%BC%96%E7%A0%81/3703727?fr=aladdin
你在浏览器网址输入栏里看到的url是这样的
中文的部分在浏览器里可以正常显示,但是如果你把它复制出来粘贴到文本编辑器中,中文部分就会变成 %E7%BC%96%E7%A0%81
在URL里,任何特殊的字符,即不是ASCII的字符,包括汉字都会被编码,比如空格,在URL里用%20来代替。
在网络编程中,经常会使用到url编码
from urllib.parse import quote, unquote
url = 'https://baike.baidu.com/item/URL%E7%BC%96%E7%A0%81/3703727?fr=aladdin'
decode_url = unquote(url)
print(decode_url)
encode_url = quote(decode_url)
print(encode_url)
程序输出结果
https://baike.baidu.com/item/URL编码/3703727?fr=aladdin
https%3A//baike.baidu.com/item/URL%E7%BC%96%E7%A0%81/3703727%3Ffr%3Daladdin
对url解析使用urllib.parse模块的urlparse函数,解析十分方便
from urllib.parse import urlparse
url = 'https://www.baidu.com/s?wd=url%20%E7%BC%96%E7%A0%81'
result = urlparse(url)
print(result)
print(result.scheme, result.netloc)
程序输出结果
ParseResult(scheme='https', netloc='www.baidu.com', path='/s', params='', query='wd=url%20%E7%BC%96%E7%A0%81', fragment='')
https www.baidu.com
QQ交流群: 211426309