URL就是个字符串,用正则处理是个不错的方案,但是urllib.parse使用起来可以更加简洁快速..

运行环境 Runtime environment

1
2
3
操作系统: Windos10  
IDE: JetBrains Pycharm 2020.2.4 x64
语言: Python 3.7.4

背景

爬虫里面要处理URL以便发出新的请求,web后端开发也要对URL处理类似跳转,入库等,总会用得着。

URL就是个字符串,用正则处理是个不错的方案,但是urllib.parse使用起来可以更加简洁快速..

快速的对URL拼接、拆分,组装,甚至判定URL是否合法等。

code

在输入的 URL 中如果有用户名和密码,

则可以用属性名 username 和 password 来获取它们,

如果没有,那么相应的属性的取值为 None 。

属性 hostname 的值与属性 netloc 的值相同,

只不过去掉了端口号,并且都是小写形式。

如果还有端口,

则属性 port 的值被转换为一个整数,

如果没有,属性的值就是 None 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from urllib.parse import urlparse

url = 'http://RaXianch:DeSireFire@github:80/path;param?query=holyshit#commit'
parsed = urlparse(url)
print('scheme :', parsed.scheme)
print('netloc :', parsed.netloc)
print('path :', parsed.path)
print('params :', parsed.params)
print('query :', parsed.query)
print('fragment:', parsed.fragment)
print('username:', parsed.username)
print('password:', parsed.password)
print('hostname:', parsed.hostname)
print('port :', parsed.port)

打印结果:

1
2
3
4
5
6
7
8
9
10
scheme  : http
netloc : RaXianch:DeSireFire@github:80
path : /path
params : param
query : query=holyshit
fragment: commit
username: user
password: DeSireFire
hostname: DeSireFire
port : 80

总结

虽然说处理字符串方法真的很多,但是python 解析 url 的方法更加方便