Leo*_*oyo 5 python beautifulsoup
我试图用beautifulsoup 在另一个标签之后获得第一个标签。
让我们假设我有这个:
<span class="number">5</span>
<span class="b">xxx</span><span class "number">10</span>
Run Code Online (Sandbox Code Playgroud)
我可以使用正则表达式获取第二个 .number 上的数字,它会非常可靠。但我们都知道 regex 不应该解析 html,所以我用 beautifulsoup 来做这个。目前我正在做这个
soup('span', {'class': 'number'})[1].string
Run Code Online (Sandbox Code Playgroud)
但是,如果在我想要的那个之前插入另一个 span.number,它会破坏代码,因为我需要的那个将变成 [2]。
有什么办法可以使用beautifulsoup在span.b之后获得第一个span.number?
您可以使用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
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 BeautifulSoup 版本 3,则等效属性称为nextSibling。
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |