BeautifulGroup在html标记Python3中通过2个术语查找文本

2024-10-04 01:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个html文件中提取一些文本,但是我需要两种类型的文本,它们在它们的标记中有一个术语(contextref)而彼此不同,例如:

1)<ix:nonfraction contextref="cfwd_30_04_2016" name="ns5:TangibleFixedAssets" unitref="GBP" decimals="0" format="ixt2:numdotdecimal" scale="0" xmlns:ix="http://www.xbrl.org/2008/inlineXBRL">180,649</ix:nonfraction>

2)<ix:nonfraction contextref="cfwd_30_04_2015" name="ns5:TangibleFixedAssets" unitref="GBP" decimals="0" format="ixt2:numdotdecimal" scale="0" xmlns:ix="http://www.xbrl.org/2008/inlineXBRL">200,395</ix:nonfraction>

目前我找到文本的代码是:var1=(soup.find('ix:nonfraction',{'name':'uk-gaap:{}'.format(variable)}).text),上面的例子给出了:180649。在

为了能够得到这两个值,我需要另一个变量来包含另一个项和name(即contextref)一起使用不同的组合,但似乎无法使其工作。在

任何帮助都很好,谢谢


Tags: name文本formatixscalegbpdecimalsns5
1条回答
网友
1楼 · 发布于 2024-10-04 01:32:36
import bs4

html = '''<ix:nonfraction contextref="cfwd_30_04_2016" name="ns5:TangibleFixedAssets" unitref="GBP" decimals="0" format="ixt2:numdotdecimal" scale="0" xmlns:ix="http://www.xbrl.org/2008/inlineXBRL">180,649</ix:nonfraction>
<ix:nonfraction contextref="cfwd_30_04_2015" name="ns5:TangibleFixedAssets" unitref="GBP" decimals="0" format="ixt2:numdotdecimal" scale="0" xmlns:ix="http://www.xbrl.org/2008/inlineXBRL">200,395</ix:nonfraction>'''

soup = bs4.BeautifulSoup(html, 'lxml')
var1, var2 = [i.text for i in soup.find_all('ix:nonfraction')]

输出:

^{pr2}$

您可以在find_all()中使用contextref作为关键字:

soup.find_all('ix:nonfraction', contextref=True)

这意味着过滤具有contextref属性的标记。在

相关问题 更多 >