所以我有了这个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/