美丽的汤得到了下一个跨度元素



我在从漂亮的汤中获取我想要的数据时遇到了问题。我有以下html页面:

<br/>
<h4>Dieses Jahr</h4>
<br/>
<span class="parName">Diesen Monat:</span> <span class="parValue">67.54 kWh</span> | 
<span class="parName">Januar:</span> <span class="parValue">143.92 kWh</span> | 
<span class="parName">Februar:</span> <span class="parValue">350.51 kWh</span> | 

我需要访问第二跨度中的值67.54kWh(在具有"Diesen Monat:"的跨度之后(;。我能够访问";Diesen Monat";span,并认为我可以使用下一个兄弟姐妹,但这不起作用。

find("span", string="Diesen Monat:").next_sibling

任何想法我不明白什么与美丽的汤

.next_sibling获取[来自父标记]的下一个子标记,它不一定是标记。在这种情况下,它可能是一个空的NavigableString。要获得下一个同级标签,请使用.find_next_sibling()而不是

html = '''
<br/>
<h4>Dieses Jahr</h4>
<br/>
<span class="parName">Januar:</span> <span class="parValue">143.92 kWh</span> | 
<span class="parName">Diesen Monat:</span> <span class="parValue">67.54 kWh</span> | 
<span class="parName">Februar:</span> <span class="parValue">350.51 kWh</span> | 
'''
BeautifulSoup(html).find("span", string="Diesen Monat:").find_next_sibling()

返回CCD_ 3。


顺便说一句,如果你安装了html5lib解析器,你可以用一个select_one调用

BeautifulSoup(html, 'html5lib').select_one("span:-soup-contains('Diesen Monat:') + span")

相关内容

最新更新