在Python3中操作HTML代码

在Python3中操作HTML代码,python,html,regex,python-3.x,web,Python,Html,Regex,Python 3.x,Web,我试图使用Python3操作一个HTML文件并删除一个带有特定id标记的div 有没有比for循环和regex混合使用更优雅的方法来操作或删除这个容器 我知道,有HTMLPasser模块,但我不确定这是否对我有帮助(它会找到相应的标记,但如何删除这些标记和内容?)。尝试和css/xpath查询 例如,使用此html: 一些文本在p div中的一些文本。 一个div中p中的一些文本 您可以在中阅读,使用类“go away”删除div,并使用以下命令输出结果: import lxml.html

我试图使用Python3操作一个HTML文件并删除一个带有特定id标记的div

有没有比for循环和regex混合使用更优雅的方法来操作或删除这个容器

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

尝试和css/xpath查询

例如,使用此html:


一些文本在p

div中的一些文本。 一个div中p中的一些文本

您可以在中阅读,使用类“go away”删除div,并使用以下命令输出结果:

import lxml.html
html=lxml.html.fromstring(html\u txt)
go_away=html.cssselect('.go away')[0]#或使用合适的xpath
走开。getparent().remove(走开)
lxml.html.tostring(html)#或lxml.html.tostring(html).decode(“utf-8”)获取字符串

尽管我对此强调得不够

不要用正则表达式解析HTML!! 下面是我如何使用正则表达式

from re import sub
new_html = sub('<div class=(\'go-away\'|"go-away")>.*?</div>', '', html)
来自重新导入子系统的

new_html=sub('.'?','',html)

尽管我认为这应该没问题,但您永远不应该使用正则表达式来解析任何东西。它通常会产生奇怪的、难以调试的问题。它将为您创建比您开始时更多的工作不要使用正则表达式进行解析。

是的,的确如此。不要这样做。谢谢分享你的经验!这正是我试图避免使用正则表达式的原因。这很糟糕,因为无论你做什么,使用regex都会让事情变得更快。有时候使用regex是不合适的,有时候使用regex是不合适的,对于大量可预测的数据来说,这绝对是明智的选择。:)谢谢,lxml正是我想要的!