我在从漂亮的汤中获取我想要的数据时遇到了问题。我有以下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")