从错位的html标签中提取文本,并将元素分开

时间:2014-07-24 14:58:11

标签: python html web-scraping html-parsing beautifulsoup

所以我有这个html片段:

<p class="tbtx">


                              MWF



<br></br>

TH
</p>
似乎完全被破坏的

。我需要提取数据,即[&#39; MWF&#39;,&#39; TH&#39;]。

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

任何适当的解决方案吗?

3 个答案:

答案 0 :(得分:3)

你正在寻找

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

答案 1 :(得分:1)

您可以使用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']

答案 2 :(得分:-3)

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

例如,如果你的html如你所说:

"
<p class="tbtx">


                              MWF



<br></br>

TH
</p>
"

我们可以看到所需的文字(&#34; MWF&#34;,&#34; TH&#34;)是由空格字符包围的。

因此,正则表达式(&#34; \ s \ w + \ s&#34;)读取&#34;找到被空白字符包围的任何字符字符集&#34;并确定所需的文字。

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

您可以在此处测试所需文字的正则表达式:http://regexpal.com/