使用BeautifulSoup获取没有标签的文本?

时间:2015-06-14 02:03:16

标签: python html regex parsing beautifulsoup

我一直在使用BeautifulSoup来解析HTML文档,似乎遇到了问题。我找到了一些我需要提取的文本,但文字很简单。没有标签或任何东西。我不确定是否需要使用正则表达式才能执行此操作,因为我不知道是否可以使用BeautifulSoup获取文本,因为它不包含任何标记。

<strike style="color: #777777">975</strike> 487 RP<div class="gs-container default-2-col">

我正在尝试提取“487”。

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用上一个或下一个标记作为锚点来查找文本。例如,首先找到<strike>元素,然后获取它旁边的文本节点:

from bs4 import BeautifulSoup

html = """<strike style="color: #777777">975</strike> 487 RP<div class="gs-container default-2-col">"""
soup = BeautifulSoup(html)

#find <strike> element first, then get text element next to it
result = soup.find('strike',{'style': 'color: #777777'}).findNextSibling(text=True)

print(result.encode('utf-8'))
#output : ' 487 RP' 
#you can then do simple text manipulation/regex to clean up the result

请注意,上面的代码是为了演示而不是为了完成整个任务。