3

我有一些这样的 HTML 代码:

<p>aaa</p>bbb
<p>ccc</p>ddd

我怎样才能得到'bbb'和'ddd'?

4

2 回答 2

1

您可以阅读每个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']

一般的想法是您在目标文本之前找到标记,然后找到下一个兄弟元素,它应该是您的文本。

于 2013-01-08T04:44:14.597 回答
-2

如果将值 ('bbb', 'ddd') 包含在标签中 (as <span>)会更容易

然后你可以使用:soup('span')

于 2013-01-08T04:40:29.850 回答