我有一些这样的 HTML 代码:
<p>aaa</p>bbb
<p>ccc</p>ddd
我怎样才能得到'bbb'和'ddd'?
您可以阅读每个p
标签的后续兄弟(请注意,这是非常特定于此文本的,因此希望它可以扩展到您的情况):
In [1]: from bs4 import BeautifulSoup
In [2]: html = """\
...: <p>aaa</p>bbb
...: <p>ccc</p>ddd"""
In [3]: soup = BeautifulSoup(html)
In [4]: [p.next_sibling for p in soup.findAll('p')]
Out[4]: [u'bbb\n', u'ddd']
这会拾取尾随的换行符,因此您可以在需要时将其删除:
In [5]: [p.next_sibling.strip() for p in soup.findAll('p')]
Out[5]: [u'bbb', u'ddd']
一般的想法是您在目标文本之前找到标记,然后找到下一个兄弟元素,它应该是您的文本。
如果将值 ('bbb', 'ddd') 包含在标签中 (as <span>
)会更容易
然后你可以使用:soup('span')