url相关技术

在涉及到http的编程过程中,很容易遇到url编码问题和url解析的需求, url编码和url解码总是成对出现,对于url的解析,可以使用urllib.parse模块的urlparse函数

1. url编码与解码

在浏览器里打开下面这个网址

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

2. url解析

对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

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案