Боюсь, что ваш подход в корне ошибочен.Значением атрибута contextRef является произвольный идентификатор, который ссылается на элемент контекста в другом месте документа.Хотя в рассматриваемом примере может содержаться год, эти идентификаторы могут быть любыми (например, c1, c2, c3 и т. Д.). Чтобы получить год, необходимо разыменовать контекст, определенный атрибутом contextRef,и посмотрите на элементы в элементе <period>
, например,
<xbrli:context id="c1">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com/1234">1234</xbrli:identifier>
</xbrli:entity>
<xbrli:period>
<xbrli:startDate>2018-01-01</xbrli:startDate>
<xbrli:endDate>2018-12-31</xbrli:endDate>
</xbrli:period>
</xbrl:context>
Кроме того, часть us-gaap:
имени элемента является префиксом пространства имен.Документы XML могут законно использовать другие префиксы для ссылки на то же пространство имен.Важным является пространство имен, к которому привязан префикс через объявление xmlns:us-gaap="..."
, обычно в корневом элементе.Вы должны использовать анализатор XML с учетом пространства имен.Я не думаю, что beautifulsoup должным образом учитывает пространство имен.
Я считаю, что система SEC ограничивает файловые системы использованием «рекомендуемых» префиксов пространства имен, так что вы можете сойти с рук при таком подходев документах SEC, но я настоятельно рекомендую использовать процессор XBRL, который позаботится о пространствах имен, разыменовании контекстов и многих других проблемах, связанных с использованием XBRL. Arelle - это процессор XBRL с открытым исходным кодом, но доступно множество других.
Использование процессора XBRL также предоставит вам доступ к информации, такой как читабельные метки из таксономии.