我有一些 HTML,例如:
<div class='cl1'>
<div class='cl2'>text_1</div>
<div class='cl3'>
<div class='cl2'>text_2</div>
</div>
</div>
我需要找到以 cl1 为父级的 cl2 类的任何项目,因此我需要获取 text_1 而不是 text_2。在简单的 css 中应该是这样的:
'div.cl1>div.cl2'
但我使用 robobrowser 和 BeautifulSoup,当我尝试时
soup.select('div.cl1>div.cl2')
它说 css 选择器是错误的。
最佳答案
您的选择器在正确的轨道上,您只需要将类隔开即可,即 div.cl1>div.cl2
应该是 div.cl1 > div.cl2
:
In [5]: from bs4 import BeautifulSoup
In [6]: html = """<div class='cl1'>
<div class='cl2'>text_1</div>
<div class='cl3'>
<div class='cl2'>text_2</div>
</div>
</div>"""
In [7]: soup = BeautifulSoup(html, "html.parser")
In [8]: soup.select_one("div.cl1 > div.cl2") # good
Out[8]: <div class="cl2">text_1</div>
In [9]: print(soup.select_one("div.cl1>div.cl2")) # bad
None
关于python - 如何查找具有特定父元素的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39499976/