You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python requests发送GET请求efast.dol.gov接口查询字符串参数丢失问题

问题原因

requests库的params参数只能处理一维键值对结构,当你把嵌套字典作为某个参数的值传入时,它只会提取嵌套字典的键作为参数值,不会自动按照目标接口要求的lucene语法做格式转换,这就是你遇到参数值丢失的根本原因。

解决方案

你需要手动把查询条件拼接成符合要求的lucene语法字符串,再作为q参数的值传入即可,参考代码如下:

import requests

# 定义筛选参数
filter_params = {
    "ein": "814699012",
    "planyear": "2020",
    "pn": "001"
}
# 拼接lucene格式的查询字符串
q_conditions = " AND ".join([f"(({k}:{v}))" for k, v in filter_params.items()])
q_str = f"({q_conditions})"

# 构造完整请求参数
args = {
    "q.parser": "lucene",
    "size": 200,
    "sort": "planname asc",
    "q": q_str,
    "facet.planyear": "{size:30}",
    "facet.plancode": "{size:100}",
    "facet.assetseoy": '{buckets:["{,100000]","[100001,500000]","[500001,1000000]","[1000001,10000000]","[10000001,}"]}',
    "facet.plantype": "{size:20}",
    "facet.businesscodecat": "{size:30}",
    "facet.businesscode": "{size:30}",
    "facet.state": "{size:100}",
    "facet.countrycode": '{buckets:["CA","GB","BM","KY"]}',
    "facet.formyear": "{size:30}"
}

url = "https://www.efast.dol.gov/services/afs"
response = requests.get(url, params=args)
# 验证请求地址是否正确
print(response.url)

运行上述代码生成的请求地址和你给出的正确示例格式完全一致,即可正常获取符合筛选条件的数据。如果后续需要新增筛选条件,只要在filter_params字典中追加对应的键值对即可,无需修改拼接逻辑。

内容的提问来源于stack exchange,提问作者MrSam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:45:05