如何只获取 BeautifulSoup 中标签的内部文本,不包括嵌入的标签?

How to only get inner text of a tag in BeautifulSoup, excluding the embedded one?

例如,

<ul>
    <li>
        <b>Hey, sexy!</b>
        Hello
    </li>
</ul>

我只想要 li 标签中的 'Hello'。

如果我使用 soup.find("ul").li.text 它也包括 b 标签。

您可以使用 extract(),这将从树中删除标签。

你的情况:

soup.find("ul").b.extract() # removes the <b> tag
soup.find("ul").li.text     # contents of <li> without <b>

您可以像这样使用 find 函数

from bs4 import BeautifulSoup

html = '''<ul><li><b>Hey, sexy!</b>Hello</li></ul>'''
soup = BeautifulSoup(html)
print soup.find('li').find(text=True, recursive=False)