Python BeautifulSoup从HTML获取文本

时间:2013-01-08 04:36:17

标签: python html beautifulsoup

我有一些像这样的HTML代码:

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

如何获得'bbb'和'ddd'?

2 个答案:

答案 0 :(得分: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']

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

答案 1 :(得分:-2)

如果将值('bbb','ddd')括在标记中(<span>

,则会更容易

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