Python 使用lxml替换保留其内容的HTML标记

Python 使用lxml替换保留其内容的HTML标记,python,lxml,Python,Lxml,我有一些html内容(没有html、body和head等标记)。我需要做的是从标记中剥离样式信息,并用p标记替换div标记 我正在使用以下命令对样式信息进行条带化: from lxml.html.clean import Cleaner return Cleaner(style=True).clean_html(html) 如何用p标记替换div标记,同时保留div标记的内容(div标记的内容应为新的p标记)。html=html.replace(“,””) html=html.replace(

我有一些html内容(没有html、body和head等标记)。我需要做的是从标记中剥离样式信息,并用p标记替换div标记

我正在使用以下命令对样式信息进行条带化:

from lxml.html.clean import Cleaner
return Cleaner(style=True).clean_html(html)
如何用p标记替换div标记,同时保留div标记的内容(div标记的内容应为新的p标记)。

html=html.replace(“,””)
html=html.replace(“,”

”)
您可以通过完整的HTML解析和生成来完成这项工作,但上面的内容可能也可以。它是一个python库,可以使用多个html解析器,但我使用了LXML。代码如下:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
for tag in soup():
    del tag['style']
    del tag['class']
    if tag.name == 'div':
        tag.name = 'p'
return soup.body.encode_contents()
eTree内置了一种简单的方法来完成标记的切换。只需设置标记参数即可。下面是我的元素列表在一次迭代后的一个示例,只是为了显示它确实将其切换为p标记

文档链接:(显示了eTree.tag函数,但我没有看到它显示您也可以设置值)

:[,,,,,,,,,,]

如果文本中有
,则可能是
div
或其他内容,所以这仍然有效。是的,这是最简单的解决方案,但其中总会有一些属性,这就是为什么我想使用lxml解析而不是字符串replacement@MuhammadTahirButt:好吧,那就写代码吧。@johnzwinck:这就是我需要帮助的地方:)
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
for tag in soup():
    del tag['style']
    del tag['class']
    if tag.name == 'div':
        tag.name = 'p'
return soup.body.encode_contents()
el = node.cssselect('span')
for e in el:
     e.tag = 'p'
<class 'list'>: [<Element p at 0x22eb9bc0f40>, <Element span at 0x22eb9bc0ea0>, <Element span at 0x22eba4114f0>, <Element span at 0x22eba411630>, <Element span at 0x22eba411680>, <Element span at 0x22eba4116d0>, <Element span at 0x22eba411720>, <Element span at 0x22eba411770>, <Element span at 0x22eba4117c0>, <Element span at 0x22eba411810>, <Element span at 0x22eba411860>, <Element span at 0x22eba4118b0>, <Element span at 0x22eba411900>, <Element span at 0x22eba411950>, <Element span at 0x22eba4119a0>, <Element span at 0x22eba4119f0>, <Element span at 0x22eba411a40>, <Element span at 0x22eba411a90>, <Element span at 0x22eba411ae0>, <Element span at 0x22eba411b30>, <Element span at 0x22eba411b80>, <Element span at 0x22eba411bd0>, <Element span at 0x22eba411c20>]
<Element p at 0x22eb9bc0f40>
<Element span at 0x22eb9bc0ea0>