python - 使用 BeautifulSoup4 在 sibling 子树中查找

标签 python beautifulsoup

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

等效的 xpath 是

#mytag ~ div span

#mytag ~ div span{
  background: green;
  color: white;
}
<div id="mytag"></div>
<span>nope</span>
<div>
  <span>foo bar</span>
</div>

我可以使用 .find_next_siblings 找到所有 sibling ,但不会搜索子树。有什么方法可以轻松做到吗?

最佳答案

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

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>]

关于python - 使用 BeautifulSoup4 在 sibling 子树中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48820655/

相关文章:

python - 使用 BeautifulSoup4 从 CSS3 伪元素获取内容

dataframe - beautifulsoup 如何故意添加如果未找到元素则返回 none

python - BeautifulSoup 解析器将分号附加到裸&符号,修改 URL?

python - 从python中的压缩文件中逐行读取

python - 如何确定电子邮件是否经过 Base64 编码?

python - Pandas 填充: How to fill only leading NaN from beginning of series until first value appears?

Python(BeautifulSoup) - 从 &lt;script&gt; 获取 href

python - 如何使用 beautifulsoup 从 <div class> 中抓取文本,其中包含 <b> ?

python - 如何摆脱 windrose pcolormap plot python 上的不连续性

python - 可变长度参数的方法签名