使用BeautifulSoup4查找兄弟姐妹子树

时间:2018-02-16 05:35:04

标签: python beautifulsoup

有没有办法在BeautifulSoup中找到siblings子树中的标签?这里的场景是我已经找到了一个我想要的标签,我需要抓住另一个标签,这个标签位于其兄弟的子树中。

等效的xpath是

for (i in 1:100){print(i+ Sys.sleep(0.15))}

#mytag ~ div span
#mytag ~ div span{
  background: green;
  color: white;
}

我可以使用<div id="mytag"></div> <span>nope</span> <div> <span>foo bar</span> </div>查找所有兄弟姐妹,但不会搜索子树。有没有办法可以轻松完成?

1 个答案:

答案 0 :(得分:1)

您可以使用接受CSS selector表达式的select()轻松完成此操作:

mydiv.select("~ div span")

快速测试:

>>> from bs4 import BeautifulSoup
>>> raw = '''<div>
... <div id="mytag"></div>
... <span>nope</span>
... <div>
...   <span>foo bar</span>
... </div>
... </div>'''
>>> soup = BeautifulSoup(raw, 'lxml')
>>> mydiv = soup.find("div", {"id": "mytag"})
>>> mydiv.select("~ div span")
[<span>foo bar</span>]