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

如何用Python离线解析本地多文件结构的XBRL财务报表?

离线解析本地XBRL文件(Arelle & Py-xbrl实现)

一、使用Arelle Python API解析

Arelle支持直接加载本地XBRL实例文件,并自动识别同目录下的关联链接库(cal、def、lab、pre文件)和模式文件(xsd),只需确保所有文件处于同一目录即可。以下是完整脚本示例:

from arelle import Cntlr, ModelManager

# 初始化控制器和模型管理器
cntlr = Cntlr.Cntlr()
model_manager = ModelManager.initialize(cntlr)

# 设置离线模式,避免自动联网获取依赖
model_manager.disclosureSystem.offline = True

# 加载本地XBRL实例文件(替换为你的实例文件路径,如aapl-20200926_htm.xml)
instance_path = "./aapl-20200926/aapl-20200926_htm.xml"
model = model_manager.load(instance_path)

# 遍历并提取财务事实数据
for fact in model.facts:
    # 获取元素名称、数值、单位和期间
    element_name = fact.qname.localName
    value = fact.value
    unit = fact.unitID if fact.unit else "N/A"
    period = fact.period.strftime("%Y-%m-%d") if fact.period else "N/A"
    
    print(f"{element_name}: {value} ({unit}) - {period}")

# 清理资源
model_manager.close()
cntlr.close()

关键说明:

  • 确保所有XBRL关联文件(xsd、cal、def等)与实例文件处于同一目录,Arelle会自动解析这些依赖。
  • 设置disclosureSystem.offline = True强制离线模式,防止工具尝试联网获取缺失的资源。
  • model.facts包含了所有XBRL实例中的财务事实,可根据需求筛选特定元素(如通过fact.concept.id匹配报表项目)。

二、使用Py-xbrl解析

Py-xbrl的OfflineLoader类支持离线加载本地XBRL文件,可直接将所有文件放在同一目录下让工具自动识别依赖。以下是实现示例:

from py_xbrl import XBRLParser, OfflineLoader

# 初始化解析器和离线加载器
parser = XBRLParser()
loader = OfflineLoader()

# 加载本地XBRL实例文件(替换为你的实例文件路径)
instance_path = "./aapl-20200926/aapl-20200926_htm.xml"
xbrl = parser.parse(instance_path, loader)

# 提取财务数据:筛选数值型概念并获取对应信息
for concept in xbrl.concepts:
    if concept.is_numeric():
        value = xbrl.get_value(concept)
        period = xbrl.get_period(concept)
        print(f"{concept.name}: {value} - {period}")

关键说明:

  • OfflineLoader会自动在实例文件所在目录查找关联的模式和链接库文件,无需额外配置路径。
  • 通过concept.is_numeric()可快速筛选出数值型财务数据,xbrl.get_value()和xbrl.get_period()分别获取对应数值和报告期间。
  • 若遇到依赖文件查找失败,可确认所有XBRL相关文件已放入同一目录,或通过OfflineLoader的参数手动指定依赖文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:57:12