Как разобрать отчеты 10-Q из EDGAR API в python? - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь использовать EDGAR API для получения 10-Q для любой данной компании (в соответствии с предоставленным значением CIK). Этот код получает самые последние 10-Q для Tesla. К этому объекту прикреплено около 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, чтобы взглянуть на его базовую структуру, а затем проанализировать с помощью xmltodict или xml.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 контент, однако, не зная, что это за теги, я немного застрял. Как я могу продолжить?

1 Ответ

1 голос
/ 04 августа 2020

Вам не нужно разбирать test; вы можете использовать методы xpath прямо на нем. Например:

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

Вывод:

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

et c. и

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

выводит:

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

и т. д.

Удачи; разбор файлов xbrl - непростая задача ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...