用python和正则表达式解析xbrl以查找文本块

2024-04-27 04:10:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python和ElementTree访问从EDGAR获取的.xml文件列表。我读了又读了ElementTree/python.org页,仍然不知道如何深入研究数据。我该如何使用ElementTree来获取与列出的.xmls的第一个TextBlock类似的内容

import import re
from urllib2 import urlopen
import requests
import xml.etree.ElementTree as ET
full_xml =['https://www.sec.gov/Archives/edgar/data/1593001/000121390017010242/ngtf-20170630.xml', 'https://www.sec.gov/Archives/edgar/data/13573/000143774917016692/bwla-20170702.xml', 'https://www.sec.gov/Archives/edgar/data/1652871/000165287117000030/none-20170630.xml', 'https://www.sec.gov/Archives/edgar/data/1434674/000154972717000042/chnd-20170630_cal.xml', 'https://www.sec.gov/Archives/edgar/data/1083922/000130841117000030/arao-20170331.xml']
for xml in full_xml:
    file = urllib2.urlopen(xml)
    tree = ET.parse(file)
    root = tree.getroot()
    print root

Tags: httpsimportdatawwwxmlsecurllib2full
1条回答
网友
1楼 · 发布于 2024-04-27 04:10:50

查找textblocks的信息不仅存在于XBRL实例(main.xml文件)中。它也在属于DTS的分类模式文件中。在

在XML级别查找textblock事实需要:

  • 通过解析实例中指向模式和链接库的所有链接来构造DTS

  • 构建从找到的所有模式及其元数据中收集的概念的列表

  • 按类型筛选这些概念(您希望找到那些类型为nonnum:textBlockItemType名称空间敏感比较的概念)

  • 在XBRL实例中查找与通过上述过滤器的概念相关联的事实

  • 处理维度时可能只包含无量纲事实

这在理论上是可行的,但在XML级别上这样做非常复杂,而且非常耗费资源,而且在XML技术栈之外的命令式语言(如XQuery)中使用库更容易出错。事实上,这相当于重新实现一个(部分)XBRL处理器,这超出了正则表达式的能力范围。在

一般来说,我强烈建议使用现有的XBRL处理器,那里有开源处理器,有些甚至可能与已经实现上述逻辑的python兼容,使用API(例如REST或python)浏览概念、选择文本块就足够了,并使用适当的数据模型查找事实。在

XBRL技术栈还处于起步阶段,许多处理器还没有在适当的抽象级别处理维度,但是如果它继续流行,产品的数量应该会增加,并且它们应该变得更加完整和稳定。在

相关问题 更多 >