如何只获取BeautifulSoup中标签的内部文本,不包括嵌入式标签?

时间:2015-02-23 23:44:33

标签: web-scraping beautifulsoup screen-scraping urllib2 python-requests

例如,

<ul>
    <li>
        <b>Hey, sexy!</b>
        Hello
    </li>
</ul>

我只希望来自li代码的“Hello”。

如果我使用soup.find("ul").li.text它还包含b标记。

2 个答案:

答案 0 :(得分:5)

你可以使用find这样的功能

from bs4 import BeautifulSoup

html = '''<ul><li><b>Hey, sexy!</b>Hello</li></ul>'''
soup = BeautifulSoup(html)
print soup.find('li').find(text=True, recursive=False)

答案 1 :(得分:1)

您可以使用extract(),这将从树中删除标记。

在你的情况下:

soup.find("ul").b.extract() # removes the <b> tag
soup.find("ul").li.text     # contents of <li> without <b>