使用css选择器从元素中获取文本,不包括嵌套元素内的文本

Posted

技术标签:

【中文标题】使用css选择器从元素中获取文本,不包括嵌套元素内的文本【英文标题】:get text from element using css selector excluding text inside nested element 【发布时间】:2021-06-03 07:28:54 【问题描述】:

我需要使用 css 选择器从 span 中获取文本,但不包括 sup 中的文本:

<span>(6-4, 7-6<sup>4</sup>)</span>

我试过这个 css 选择器但没有用:

span :not(sup)
# soup.select_one('span :not(sup)').text

我需要的结果是这样的: "(6-4, 7-6)"

【问题讨论】:

【参考方案1】:

试试这个,只获取父元素的文本,排除所有子元素的文本。

span_element = soup.find('span')
span_text = span_element.find(text=True, recursive=False)

输出: 6-4, 7-6

【讨论】:

【参考方案2】:

使用 BeautifulSoup,您可以使用find_next() 方法:

print(soup.select_one('span').find_next(text=True))

【讨论】:

以上是关于使用css选择器从元素中获取文本,不包括嵌套元素内的文本的主要内容,如果未能解决你的问题,请参考以下文章

为啥嵌套 CSS 选择器是自下而上应用的? [复制]

使用 jQuery 和 CSS 选择器选择嵌套元素的共同父/祖先

用css选择器 如何选择自己的父元素

用sass选择器嵌套的时候,如何表示直接子元素

CSS 选择最多 N 层的嵌套元素

HTML与CSS