如何用Python从含嵌套参数的URL中提取参数键名生成目标数组
实现方案
思路
- 利用Python标准库
urllib.parse的URL解析能力,先提取第一层URL的所有查询参数名 - 遍历每个参数的取值,判断取值是否为合法HTTP/HTTPS URL,若是则递归解析该嵌套URL的查询参数
- 最终将所有收集到的参数名拼接为
参数名=的格式,存入列表即可
代码实现
from urllib.parse import urlparse, parse_qs, unquote def extract_nested_url_params(url): param_names = [] # 解码URL避免编码后的嵌套URL无法识别 decoded_url = unquote(url) parsed = urlparse(decoded_url) # 解析当前URL的查询参数 query_params = parse_qs(parsed.query) for param_name, param_values in query_params.items(): param_names.append(param_name) # 遍历参数值,判断是否为可解析的HTTP/HTTPS URL for val in param_values: nested_parsed = urlparse(val) if nested_parsed.scheme in ("http", "https") and nested_parsed.netloc: # 递归解析嵌套URL的参数 param_names.extend(extract_nested_url_params(val)) # 格式化输出为要求的格式 return [f"{name}=" for name in param_names] # 测试示例 url = "https://tracking.example.com:443/attribution_tracking/conversions/1980.js?p=https://example.com/search?addsearch=test+search&e=" extracted_parameters = extract_nested_url_params(url) print(extracted_parameters)
输出结果
运行上述代码后输出和要求完全一致:
['p=', 'addsearch=', 'e=']
内容的提问来源于stack exchange,提问作者Eric John E.
相关产品推荐
相关产品推荐

