如何在python中解析EDGAR API的10-Q报告



我正在尝试使用EDGAR API检索任何给定公司的10-Q(对应于提供的CIK值。(此代码检索特斯拉的最新10-Q。大约有30个方法附加到该对象,例如键、值、项和text_content。Text_content似乎是唯一一个不返回空列表[]的内容。然而,文本并不容易解析,因为不同公司的10-Q差异很大。

毫无疑问,有人会评论:我为什么要设置no_of_documents=2?如果此参数设置为1,则会返回错误的文档(不是10-Q(。任何参数超过1时,将检索到实际的10个Q。我不知道为什么API会这样做。

from edgar import Company
def func(cik):
company = Company("",cik)
tree = company.get_all_filings(filing_type="10-Q")        
documents = Company.get_documents(tree,no_of_documents=2)
return documents[0]

test = func('0001318605')

我想做的是(A(打印出原始XML以了解其底层结构,然后使用xmltodictxml.etree.ElementTree进行解析。但是,我收到以下错误。

使用ET

import xml.etree.ElementTree as ET
ET.parse(test)
>>>
TypeError: expected str, bytes or os.PathLike object, not HtmlElement

使用XMLtoDict

import xmltodict
xmltodict.parse(test)
TypeError: a bytes-like object is required, not 'HtmlElement'

同样,我的目标是搜索导航XML内容,但是,在不知道标签是什么的情况下,我有点卡住了。我该如何继续?

您不需要解析test;你可以直接在上面使用xpath方法。例如:

test.xpath('//entity/segment/explicitmember/text()')

输出:

'tsla:OperatingLeaseVehiclesMember',
'tsla:OperatingLeaseVehiclesMember',
'tsla:SolarEnergySystemsMember',
'tsla:SolarEnergySystemsMember',
'tsla:AutomotiveSegmentMember',
'tsla:AutomotiveSegmentMember',

等等。和

test.xpath('//context/period/instant/text()')

输出:

['2020-07-20',
'2020-06-30',
'2019-12-31',
'2020-06-30',
'2019-12-31',

等等

祝你好运;解析xbrl文件不是一件容易的事。。。

相关内容

  • 没有找到相关文章

最新更新