我正在尝试使用Python3操作HTML文件并使用某个id-Tag删除 div 。
是否有一种更优雅的方式来操作或移除此容器,而不是 for -Loops和 regex 的混合?
我知道,有HTMLParser模块,但我不确定这是否对我有用(它找到相应的标签,但是如何删除这些和内容?)。
答案 0 :(得分:0)
尝试lxml和css / xpath查询。
例如,使用此html:
<html>
<body>
<p>Some text in a p.</p>
<div class="go-away">Some text in a div.</div>
<div><p>Some text in a p in a div</p></div>
</body>
</html>
你可以阅读它,删除带有“go-away”类的div,并输出结果:
import lxml.html
html = lxml.html.fromstring(html_txt)
go_away = html.cssselect('.go-away')[0] # Or with suitable xpath
go_away.getparent().remove(go_away)
lxml.html.tostring(html) # Or lxml.html.tostring(html).decode("utf-8") to get a string
答案 1 :(得分:-1)
虽然我无法强调这一点
这是我如何用正则表达式做的。
from re import sub
new_html = sub('<div class=(\'go-away\'|"go-away")>.*?</div>', '', html)
即使我认为应该没问题,但你永远不应该使用正则表达式来解析任何东西。它经常发生奇怪,难以调试的问题。它会比你开始为你创造更多的工作。 请勿使用正则表达式解析。