Python 使用<;从损坏的html标记中提取文本;br>;分离元素

Python 使用<;从损坏的html标记中提取文本;br>;分离元素,python,html,web-scraping,html-parsing,beautifulsoup,Python,Html,Web Scraping,Html Parsing,Beautifulsoup,我有一个html片段: <p class="tbtx"> MWF <br></br> TH </p> MWF 真实航向 看起来完全被弄坏了。我需要提取数据,即['MWF','TH'] 我能想到的唯一解决方案是替换html中的所有换行符和空格,然后在处拆分,重建html结构,然后提取.text,但这有点荒谬 有什么合适的解决办法吗 您可以使用和BeautifulSoup

我有一个html片段:

<p class="tbtx">


                              MWF



<br></br>

TH
</p>

MWF

真实航向

看起来完全被弄坏了。我需要提取数据,即['MWF','TH']

我能想到的唯一解决方案是替换html中的所有换行符和空格,然后在
处拆分,重建html结构,然后提取.text,但这有点荒谬

有什么合适的解决办法吗

您可以使用和BeautifulSoup从HTML片段中提取文本

from bs4 import BeautifulSoup

html = """<p class="tbtx">


                              MWF



<br></br>

TH
</p>"""

print filter(None,BeautifulSoup(html).get_text().strip().split("\n"))
是您正在寻找的-它删除不必要的空白并返回字符串

演示:

从bs4导入美化组
data=“”

MWF

真实航向

“”“ 汤=美汤(数据) 打印列表(汤。剥落的字符串)#打印[u'MWF',u'TH']
我建议使用正则表达式提取文本

例如,如果您的html如您所述:

"
<p class="tbtx">


                              MWF



<br></br>

TH
</p>
"

MWF

真实航向

"
我们可以看到所需的文本(“MWF”、“TH”)被空格字符包围

因此,正则表达式(“\s\w+\s”)读取“查找由空白字符包围的任何单词字符集”,并将标识所需的文本

以下是创建正则表达式的备忘:


您可以在此处测试所需文本上的正则表达式:

人们应该注意,它并不适用于所有版本的BeautifulSoup。只有在我安装了BeautifulSoup4之后,我才开始工作
from bs4 import BeautifulSoup

data = """<p class="tbtx">


                              MWF



<br></br>

TH
</p>"""

soup = BeautifulSoup(data)
print list(soup.stripped_strings)  # prints [u'MWF', u'TH']
"
<p class="tbtx">


                              MWF



<br></br>

TH
</p>
"