用于html标签的Python Regex

时间:2017-01-03 12:54:04

标签: python html regex

我在使用html解析器之前试图摆脱HTML代码的一些元素。我是regex的新手,这就是为什么我在理解语法时遇到问题。

我的部分html代码如下所示:

<div class="footer" id="footer">
 <other tags> ... bla ... </other tags>
</div>

但似乎页面的相同“部分”可以在某个子页面上以不同方式书写,如下所示:

<div id="footer" class="footer">
 <other tags> ... bla ... </other tags>
</div>

我取得的成就是摆脱具体案例:

footer = re.sub('<div class="footer" id="footer">.*?</div>','',html)

但我想要的是一个更通用的正则表达式,所以如果他应该摆脱所有部分,例如“id =”页脚“无论前面或后面是什么

<div ... id="footer" ...> 
<other tags> ... bla ... </other tags>    
</div> 
编辑:在被“讨厌”之前,我对HTML解析器也很陌生。

感谢您的帮助!

MG

1 个答案:

答案 0 :(得分:1)

你为什么要删除它?正如Bhavesh所说,只需选择你想要的那些。但如果您想知道我们是否可以删除它们,那么您可以通过decompose()

删除它们
a="""
<div class="footer" id="footer">
 <p>lskjdf</p>
</div>

<div id="not_footer" class="footer">
<p>lskjdf</p>
</div>
"""
b = BeautifulSoup(a)
print b
print '---------------------'
print '---------------------'
for c in b.select('div#footer'):
    c.decompose()
print b

输出:

<html><body><div class="footer" id="footer">
<p>lskjdf</p>
</div>
<div class="footer" id="not_footer">
<p>lskjdf</p>
</div>
</body></html>
---------------------
---------------------
<html><body>
<div class="footer" id="not_footer">
<p>lskjdf</p>
</div>
</body></html>