我正在尝试使用beautifulsoup获取另一个标签之后的第一个标签。
我想我有这个:
<span class="number">5</span>
<span class="b">xxx</span><span class "number">10</span>
我可以用正则表达式得到第二个.number上的数字,它会非常可靠。但我们都知道正则表达式不应该解析html,所以我用beautifulsoup做这个。目前我正在用
这样做soup('span', {'class': 'number'})[1].string
但是,如果在我想要的那个之前插入另一个span.number,它将破坏代码,因为我需要的那个将成为[2]。
有没有办法使用beautifulsoup来获得第一个span.number AFTER span.b?
答案 0 :(得分:3)
您可以使用next_sibling获取<span class="b">
之后的下一个标记:
import bs4 as bs
content = '''<span class="number">5</span>
<span class="b">xxx</span><span class "number">10</span>'''
soup = bs.BeautifulSoup(content)
print(soup('span', {'class': 'b'})[0].next_sibling)
# <span class="">10</span>
print(soup('span', {'class': 'b'})[0].next_sibling.string)
# 10
如果您使用的是BeautifulSoup版本3,则等效属性称为nextSibling。