如何提取URL路径参数并在Python POST请求中使用
实现方法
直接使用Python自带的标准库urllib.parse做URL解析即可,不需要手写复杂正则,适配性更强,不会因为URL格式细微调整导致提取失败。
修改逻辑
- 导入URL解析依赖(Python内置,无需额外安装第三方包)
- 解析用户传入的访问URL,拆分路径段,提取最后一段内容并统一转为大写,匹配BOM接口要求的四字码大写格式
- 将提取到的机场码替换
myobj字典中硬编码的YSSY值
修改后完整代码
import requests import re from urllib.parse import urlparse # BOM接口请求地址 bom_api_url = 'http://www.bom.gov.au/aviation/php/process.php' headers = {'User-Agent': 'Chrome/102.0.0.0'} # 替换为实际用户访问的URL,下方为示例地址 user_visit_url = 'https://example.com/taf/ymml' # 解析URL结构 parsed_url = urlparse(user_visit_url) # 拆分路径,过滤空的路径段 path_segments = [seg for seg in parsed_url.path.split('/') if seg] # 取路径最后一段作为机场码,统一转大写 airport_code = path_segments[-1].upper() myobj = {'keyword': airport_code, 'type': 'search', 'page': 'TAF'} x = requests.post(bom_api_url, data = myobj, headers=headers) content = x.text stripped = re.sub('<[^<]+?>', ' ', content) split_string = stripped.split("METAR", 1) substring = split_string[0] print(substring)
补充说明
- 上述取路径最后一段的写法通用性较强,只要机场码在URL路径的最后一位,不管前面路径层级怎么调整都能正常提取
- 如果你的URL路径结构固定为
/taf/[机场码],也可以直接通过索引取path_segments[1]拿到机场码
效果验证:传入示例地址
https://example.com/taf/ymml时,提取到的airport_code值为YMML,完全符合接口传参要求。
内容的提问来源于stack exchange,提问作者chrisg06
相关产品推荐
相关产品推荐

