首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中解析来自EDGAR API的10-Q报表?

如何在python中解析来自EDGAR API的10-Q报表?
EN

Stack Overflow用户
提问于 2020-08-04 04:50:38
回答 1查看 215关注 0票数 1

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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
import xml.etree.ElementTree as ET
ET.parse(test)
>>>
TypeError: expected str, bytes or os.PathLike object, not HtmlElement

使用XMLtoDict

代码语言:javascript
复制
import xmltodict
xmltodict.parse(test)
TypeError: a bytes-like object is required, not 'HtmlElement'

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 05:43:05

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

代码语言:javascript
复制
test.xpath('//entity/segment/explicitmember/text()')

输出:

代码语言:javascript
复制
 'tsla:OperatingLeaseVehiclesMember',
 'tsla:OperatingLeaseVehiclesMember',
 'tsla:SolarEnergySystemsMember',
 'tsla:SolarEnergySystemsMember',
 'tsla:AutomotiveSegmentMember',
 'tsla:AutomotiveSegmentMember',

等,以及

代码语言:javascript
复制
test.xpath('//context/period/instant/text()')

输出:

代码语言:javascript
复制
 ['2020-07-20',
 '2020-06-30',
 '2019-12-31',
 '2020-06-30',
 '2019-12-31',

诸若此类。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63236781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档