我使用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
查找textblocks的信息不仅存在于XBRL实例(main.xml文件)中。它也在属于DTS的分类模式文件中。在
在XML级别查找textblock事实需要:
通过解析实例中指向模式和链接库的所有链接来构造DTS
构建从找到的所有模式及其元数据中收集的概念的列表
按类型筛选这些概念(您希望找到那些类型为
nonnum:textBlockItemType
名称空间敏感比较的概念)在XBRL实例中查找与通过上述过滤器的概念相关联的事实
处理维度时可能只包含无量纲事实
这在理论上是可行的,但在XML级别上这样做非常复杂,而且非常耗费资源,而且在XML技术栈之外的命令式语言(如XQuery)中使用库更容易出错。事实上,这相当于重新实现一个(部分)XBRL处理器,这超出了正则表达式的能力范围。在
一般来说,我强烈建议使用现有的XBRL处理器,那里有开源处理器,有些甚至可能与已经实现上述逻辑的python兼容,使用API(例如REST或python)浏览概念、选择文本块就足够了,并使用适当的数据模型查找事实。在
XBRL技术栈还处于起步阶段,许多处理器还没有在适当的抽象级别处理维度,但是如果它继续流行,产品的数量应该会增加,并且它们应该变得更加完整和稳定。在
相关问题 更多 >
编程相关推荐