我在使用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
答案 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>