来自BeautifulSoup4的文本丢失

2024-10-03 17:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在元素中找到文本,忽略子文本。因此,我使用了以下代码:

text = """<a aria-expanded="false" aria-owns="faqGen5" href="#">aaa <span class="nobreak">bbb</span> ccc?</a>"""
obj = BeautifulSoup(text)
obj.find(text=True)

预期产量

aaa ccc?

电流输出

aaa

Tags: 代码text文本falseobj元素classhref
1条回答
网友
1楼 · 发布于 2024-10-03 17:21:15

如果查看标记的^{},您将看到所需的文本属于名为^{}的类。你知道吗

from bs4 import BeautifulSoup, NavigableString

html = """<a aria-expanded="false" aria-owns="faqGen5" href="#">aaa <span class="nobreak">bbb</span> ccc?</a>"""
soup = BeautifulSoup(html, 'lxml')

for content in soup.find('a').contents:
    print(content, type(content))

# aaa  <class 'bs4.element.NavigableString'>
# <span class="nobreak">bbb</span> <class 'bs4.element.Tag'>
#  ccc? <class 'bs4.element.NavigableString'>

现在,您只需要获取属于^{}类的元素并将它们连接在一起。你知道吗

text = ''.join([x for x in soup.find('a').contents if isinstance(x, NavigableString)])
print(text)
# aaa  ccc?

相关问题 更多 >