在Python3中操作HTML代码

时间:2015-12-14 23:17:34

标签: python html regex python-3.x web

我正在尝试使用Python3操作HTML文件并使用某个id-Tag删除 div

是否有一种更优雅的方式来操作或移除此容器,而不是 for -Loops和 regex 的混合?

我知道,有HTMLParser模块,但我不确定这是否对我有用(它找到相应的标签,但是如何删除这些和内容?)。

2 个答案:

答案 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)

虽然我无法强调这一点

不要带有REGEX !!的P PARSE HTML

这是我如何用正则表达式做的。

from re import sub
new_html = sub('<div class=(\'go-away\'|"go-away")>.*?</div>', '', html)

即使我认为应该没问题,但你永远不应该使用正则表达式来解析任何东西。它经常发生奇怪,难以调试的问题。它会比你开始为你创造更多的工作。 请勿使用正则表达式解析。