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

调用Nasdaq数据API报xmlsquery解析错如何存入pandas

问题解决方法

返回Error getting base data: Error parsing xmlsquery的核心原因是POST请求提交的xmlquery参数结构不完整、格式错误,接口无法解析查询规则,和Cookie、反爬拦截无关,不需要使用Selenium。

正确请求规则

  • 请求地址:http://www.nasdaqomxnordic.com/webproxy/DataFeedProxy.aspx
  • 请求方法:POST
  • 必要请求头:仅需携带正常浏览器标识的User-Agent,以及Content-Type: application/x-www-form-urlencoded,无需携带浏览器复制的大量冗余Cookie,无效Cookie反而可能导致请求异常。
  • 核心表单参数:必须传入结构完整的xmlquery字段,值为符合接口规范的XML格式查询语句,定义查询的市场、标的类型、返回字段等规则。

可运行代码示例

先安装必要依赖:
pip install requests pandas lxml

完整请求与数据存入DataFrame的代码如下:

import requests
import pandas as pd

# 请求头配置,不要加多余冗余字段
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Content-Type": "application/x-www-form-urlencoded"
}

# 核心POST参数,xmlquery必须保持完整XML结构
form_data = {
    "xmlquery": """<post>
<param name="Exchange" value="NMF"/>
<param name="SubSystem" value="Prices"/>
<param name="Action" value="GetDataFeed"/>
<param name="App" value="/obligationer/danmark"/>
<param name="InstrumentType" value="BOND"/>
<param name="Market" value="CPH:GOV,CPH:MORT,CPH:CORP"/>
<param name="XPath" value="//inst[@type!='']"/>
<param name="Columns" value="nm,id,cpn,rt,mtyp,trdprc,yld,vol,dtd,mty,cr"/>
<param name="RecursiveMarketElement" value="True"/>
<param name="lang" value="da"/>
</post>"""
}

resp = requests.post(
    "http://www.nasdaqomxnordic.com/webproxy/DataFeedProxy.aspx",
    headers=headers,
    data=form_data,
    timeout=30
)
resp.encoding = "utf-8"

# 接口返回XML格式数据,直接解析为DataFrame
df = pd.read_xml(resp.text, xpath=".//inst")
# 按需重命名字段,对应Columns参数传入的字段顺序
df.columns = [
    "债券名称", "产品ID", "票息率", "评级", "做市商类型",
    "最新成交价", "收益率", "成交量", "付息日", "到期日", "计价货币"
]

# 打印前5行验证结果
print(df.head())

常见踩坑说明

  • 不要手动对xmlquery的XML内容做URL编码,requests库提交form表单时会自动完成编码处理,手动编码会破坏参数结构,再次触发解析错误。
  • 若需要自定义返回字段,可修改xmlquery中Columns参数的字段编码;若需要加筛选规则(如到期日范围、债券类型筛选),直接在XML结构中新增对应<param>节点即可,只要XML语法合法就不会报解析错误。
  • 接口默认返回全量匹配的丹麦债券数据(包含国债、抵押债、企业债),若需要分页可在xmlquery中新增<param name="PageSize" value="每页条数"/>、<param name="PageNumber" value="页码"/>参数控制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:24:25