Прекрасный суп находит, но результаты находят, но список пустых - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь использовать Beautiful Soup для разбора документа XBRL (стандартного тегового XML). Я пытался найти все элементы с тегом «iic-com: inversionesfinancierasrvcotizada». Когда я использую функцию find, она возвращает результат, первую из желаемых записей.

soup.find('iic-com:inversionesfinancierasrvcotizada')

возвращает XML

<iic-com:inversionesfinancierasrvcotizada>
<iic-com:codigoisin contextref="FIM_T12018_V86902186_ia">ES0105130001</iic-com:codigoisin>
<iic-com:inversionesfinancierasdescripcion contextref="FIM_T12018_V86902186_ia">GLOBAL DOMINION ACCESS SA</iic-com:inversionesfinancierasdescripcion>
<dgi-lc-int:xcode_iso4217.eur contextref="FIM_T12018_V86902186_da">EUR</dgi-lc-int:xcode_iso4217.eur>
<iic-com:inversionesfinancierasimporte>
<iic-com:inversionesfinancierasvalor contextref="FIM_T12018_V86902186_ia" decimals="2" unitref="euro">190490</iic-com:inversionesfinancierasvalor>
<iic-com:inversionesfinancierasporcentaje contextref="FIM_T12018_V86902186_ia" decimals="2" unitref="pure">0.10</iic-com:inversionesfinancierasporcentaje>
</iic-com:inversionesfinancierasimporte>
<iic-com:inversionesfinancierasimporte>
<iic-com:inversionesfinancierasvalor contextref="FIM_T12018_V86902186_ipy" decimals="2" unitref="euro">185545</iic-com:inversionesfinancierasvalor>
<iic-com:inversionesfinancierasporcentaje contextref="FIM_T12018_V86902186_ipy" decimals="2" unitref="pure">0.11</iic-com:inversionesfinancierasporcentaje>
</iic-com:inversionesfinancierasimporte>
</iic-com:inversionesfinancierasrvcotizada>

Однако, когда я попробую методы find_all или findAll, я ожидаю увидеть эту запись плюс другие дополнительные записи, но результат будет такой.

soup.find_all('iic-com:inversionesfinancierasrvcotizada')

Уступая

[]

Я не знаю, что я здесь делаю неправильно.

РЕДАКТИРОВАТЬ : Если вы хотите попробовать полный пример, сначала вам нужно получить документ от здесь , загрузив первый документ XBRL под 2018, Trimestre 1. У меня есть скачал и назвал его "trueval.XML". Тогда код, который я использовал для чтения, был:

from bs4 import BeautifulSoup as bs
import io

soup = bs(io.open("trueval.XML", encoding="ISO-8859-1"), "html.parser")

1 Ответ

0 голосов
/ 30 апреля 2018

Решение, которое я даю, не является эффективным, но оно должно помочь вам. Я использовал селектор в моем скрипте. Гитве это выстрел:

from bs4 import BeautifulSoup

element = """
<iic-com:inversionesfinancierasrvcotizada>
<iic-com:codigoisin contextref="FIM_T12018_V86902186_ia">ES0105130001</iic-com:codigoisin>
<iic-com:inversionesfinancierasdescripcion contextref="FIM_T12018_V86902186_ia">GLOBAL DOMINION ACCESS SA</iic-com:inversionesfinancierasdescripcion>
<dgi-lc-int:xcode_iso4217.eur contextref="FIM_T12018_V86902186_da">EUR</dgi-lc-int:xcode_iso4217.eur>
<iic-com:inversionesfinancierasimporte>
<iic-com:inversionesfinancierasvalor contextref="FIM_T12018_V86902186_ia" decimals="2" unitref="euro">190490</iic-com:inversionesfinancierasvalor>
<iic-com:inversionesfinancierasporcentaje contextref="FIM_T12018_V86902186_ia" decimals="2" unitref="pure">0.10</iic-com:inversionesfinancierasporcentaje>
</iic-com:inversionesfinancierasimporte>
<iic-com:inversionesfinancierasimporte>
<iic-com:inversionesfinancierasvalor contextref="FIM_T12018_V86902186_ipy" decimals="2" unitref="euro">185545</iic-com:inversionesfinancierasvalor>
<iic-com:inversionesfinancierasporcentaje contextref="FIM_T12018_V86902186_ipy" decimals="2" unitref="pure">0.11</iic-com:inversionesfinancierasporcentaje>
</iic-com:inversionesfinancierasimporte>
</iic-com:inversionesfinancierasrvcotizada>
"""
soup = BeautifulSoup(element, 'lxml')
for item in soup.select("[contextref^='FIM_T']"):
    print(item.text)

Результат, который он выдает:

ES0105130001
GLOBAL DOMINION ACCESS SA
EUR
190490
0.10
185545
0.11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...