在 Python3 中,解析URL常用的方法是 urllib.parse 模块中的 urlparse、 parse_qs 和 parse_qsl 三个函数。urlparse 将 url 分割为 scheme、netloc、path、params、query 和 fragment 这几部分,如下图所示:
在 urlparse 的基础上,parse_qs 和 parse_qsl 可以获取 url 中更详细的信息,比如:
parse_qs 和 parse_qsl 的差别在于输出数据的结果稍有不同
完整代码如下:
from urllib.parse import urlparse, parse_qs, parse_qsl url = 'http://sys.hibor.com.cn/baogao/home/index?abc=aUqRmPpQvNoPqRsRoPvNwOxO&def=mOoOmNvMiNqQpMjMmOxO8OuNMYmMqRvPnNpN&vidd=5&keyy=TYUGUIYUI&xyz=rQmQnOrRsQxPtQ&op=0' # 1. 获取各主要参数 path = urlparse(url).path params = urlparse(url).params query = urlparse(url).query # 2. 获取详细查询信息 parse_qs(urlparse(url).query) # {'key':['value']} parse_qsl(urlparse(url).query) # [('key','value')]
简单地封装一下:
文件:url_util.py
from urllib.parse import parse_qs, urlparse from framework.utils.map_util import map_get from framework.utils.mysql_util import mysql_is_not_empty from framework.utils.string_util import string_is_empty def url_get_param(url, param_name): """ 获取url中的某个参数的值 参考:Python 解析 URL 网址:https://blog.csdn.net/weixin_42902669/article/details/88907704 :param url: 网址 :param param_name: 参数名 :return: 参数值 """ if string_is_empty(url) or string_is_empty(param_name): return '' params_map = parse_qs(urlparse(url).query) param_info = map_get(params_map, param_name, []) if mysql_is_not_empty(param_info): return param_info[0] return ''