所以我有这个html片段:
<p class="tbtx">
MWF
<br></br>
TH
</p>
似乎完全被破坏的。我需要提取数据,即[&#39; MWF&#39;,&#39; TH&#39;]。
我能想到的唯一解决方案是替换html中的所有换行符和空格,然后将其拆分为
并重建html结构然后提取.text但它有点荒谬。
任何适当的解决方案吗?
答案 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/