我正在尝试使用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?)
但是在这种情况下有更好的解决方案吗?
答案 0 :(得分: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]
更改为您需要的任何内容)。