gpt4 book ai didi

python - 使用 BeautifulSoup CSS 选择器获取文本

转载 作者:太空狗 更新时间:2023-10-29 21:42:10 27 4
gpt4 key购买 nike

示例 HTML

<h2 id="name">
ABC
<span class="numbers">123</span>
<span class="lower">abc</span>
</h2>

我可以通过类似的方式获取数字:

soup.select('#name > span.numbers')[0].text

如何使用 BeautifulSoup 和 select 函数获取文本 ABC

在这种情况下呢?

<div id="name">
<div id="numbers">123</div>
ABC
</div>

最佳答案

在第一种情况下,获取 previous sibling :

soup.select_one('#name > span.numbers').previous_sibling

在第二种情况下,获取 next sibling :

soup.select_one('#name > #numbers').next_sibling

请注意,我假设您有意将 numbers 作为 id 值,并且标签是 div 而不是 跨度。因此,我调整了 CSS 选择器。


为了涵盖这两种情况,您可以转到标记的父级并以非递归方式找到非空文本节点:

parent = soup.select_one('#name > .numbers,#numbers').parent
print(parent.find(text=lambda text: text and text.strip(), recursive=False).strip())

请注意选择器中的变化 - 我们要求匹配 numbers id 或 numbers 类。

不过,我觉得这种通用解决方案不太可靠,因为对于初学者来说,我不知道您的实际输入是什么。

关于python - 使用 BeautifulSoup CSS 选择器获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37873059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com