我正在尝试使用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')
屈服
[]
我不知道我在这里做错了什么。
编辑:如果您想尝试完整的示例,首先需要从here下载第一份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")
答案 0 :(得分:1)
我给出的解决方案不是一个有效的解决方案,但它应该让你到那里。我在我的脚本中使用了selector。 Gitve一枪:
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