如何用自定义元素替换HTML注释

前端之家收集整理的这篇文章主要介绍了如何用自定义元素替换HTML注释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用Python中的BeautifulSoup将大量HTML文件批量转换为XML.

示例HTML文件如下所示:

我想出了如何找到doctype并将其替换为标签< doctype> …< / doctype>,但评论给了我很多挫折感.我想用< comment> …< / comment>替换HTML评论.在这个示例HTML中,我能够替换前两个HTML注释,但是html标记内的任何内容关闭html标记之后的最后一个注释我都没有.

这是我的代码

file = open ("sample.html","r")
soup = BeautifulSoup(file,"xml")

for child in soup.children:

    # This takes care of the first two HTML comments
    if isinstance(child,bs4.Comment):
        child.replace_with("

这是我第一次使用BeautifulSoup.如何使用BeautifulSoup查找和替换所有HTML注释< comment>标签

我可以将它转换为字节流,通过pickle,序列化,应用正则表达式,然后将其解除回一个BeautifulSoup对象?这会起作用还是只会导致更多问题?

我尝试在子标记对象上使用pickle但反序列化因TypeError而失败:__ new __()缺少1个必需的位置参数:’name’.

然后我尝试通过child.text对标签的文本进行腌制,但由于AttributeError,反序列化失败:无法设置属性.基本上,child.text是只读的,这解释了为什么正则表达式不起作用.所以,我不知道如何修改文本.

最佳答案
你有几个问题:

>您无法修改child.text.它是一个只读属性,只需在幕后调用get_text(),其结果就是一个与文档无关的全新字符串.
> re.sub()不会就地修改任何内容.你的路线

re.sub("(

猜你在找的HTML相关文章