2

我正在尝试使用 BeautifulSoup 提取文本。

这是html:

<div>
    "BLABLA"
    <span> "RRRRR" </span>
    <span> "ZZZZZ" </span>
</div>

我只想得到'BLABLA''RRRR'得到'ZZZZ'

当然soup.text给了我3个文本。

一种解决方案是迭代直到我找到第二个跨度(如这个问题:How to get all text between just two specified tags using BeautifulSoup?

但是在这种情况下有更好的解决方案吗?

4

1 回答 1

0

您可以使用以下代码(您可以根据需要进行修改):

from bs4 import BeautifulSoup, NavigableString

html = '''
<div>
    "BLABLA"
    <span> "RRRRR" </span>
    <span> "ZZZZZ" </span>
</div>'''
soup = BeautifulSoup(html, 'lxml')

wanted_text = [x.strip() if isinstance(x, NavigableString) else x.text.strip() for x in soup.find('div').contents[:2]]
print(wanted_text)
# ['"BLABLA"', '"RRRRR"']

如果 HTML 发生了一些变化,您只需更改切片的索引(即更改contents[:2]为您需要的任何内容)。

于 2018-03-27T18:39:15.057 回答