Python 使用<;从损坏的html标记中提取文本;br>;分离元素
我有一个html片段: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
<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>
"