从损坏的 HTML 标记中提取文本并<br>分隔元素



所以我有了这个html片段:

<p class="tbtx">

                              MWF

<br></br>
TH
</p>

似乎完全被打乱了。我需要提取数据,即['MWF', 'TH']。

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

有合适的解决方案吗?

.stripped_strings是您正在寻找的-它删除不必要的空白并返回字符串。

演示:

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']

您可以使用filter和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"))

输出:

[u'MWF', u'TH']

我建议使用正则表达式提取文本

例如,如果你的html是:

"
<p class="tbtx">

                              MWF

<br></br>
TH
</p>
"

我们可以看到所需的文本("MWF","TH")被空白字符包围。

因此,正则表达式("sw+s")读取"查找被空白字符包围的任何单词字符集",并将识别所需的文本。

下面是创建正则表达式的备忘单:http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1

你可以在这里测试你的正则表达式对所需的文本:http://regexpal.com/

相关内容

最新更新