我正在尝试从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)
,上面的示例给出了:180,649。
为了能够获得这两个值,我需要另一个变量来包含另一个术语以及name
,(正在contextref
)我玩过不同的组合,但似乎无法使它工作
任何帮助都会很棒,谢谢
答案 0 :(得分:0)
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')]
出:
('180,649', '200,395')
您可以使用contextref
作为find_all()
中的关键字:
soup.find_all('ix:nonfraction', contextref=True)
这意味着过滤具有contextref
属性的标记。