python - 如何查找具有特定父元素的元素?

标签 python css-selectors beautifulsoup robobrowser

我有一些 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'

但我使用 robobrowserBeautifulSoup,当我尝试时

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/

相关文章:

python - 从网络数据中提取两个表的内容

python - BeautifulSoup : searching for a nested pattern?

python - 特定网站不允许我从他们的页面获取链接

python - 过滤数据透视表列中的值

依赖于 dlib 的 python 可执行文件不起作用

python - Gensim 短语用于过滤 n 元语法

html - 如何选择放置在未知级别的元素

html - 您可以使用 CSS 定位 ID 中的 ID 吗?

第 n 个范围的 CSS 选择器?

python - PyArray_SimpleNewFromData