使用CMD或JavaScript批量查找和删除部分HTML文件
假设文件夹中有一组text.html文件 我需要处理每个文件并删除特定HTML标记的内容,包括标记本身。处理后必须重写文件 示例:使用CMD或JavaScript批量查找和删除部分HTML文件,javascript,html,xpath,sed,html-parsing,Javascript,Html,Xpath,Sed,Html Parsing,假设文件夹中有一组text.html文件 我需要处理每个文件并删除特定HTML标记的内容,包括标记本身。处理后必须重写文件 示例: 删除所有块 删除所有块,包括内部内容 像sed-i-e's/Regex//g'*.html这样的正则表达式工具不适合html处理。因此,我正在寻找专注于HTML解析的解决方案,例如基于XPATH的//script,//div[@class=“test class”] 实现此目的的最佳方法是什么?要使用xmlstarlet编辑当前目录中的所有.html文件: xmls
块
块,包括内部内容sed-i-e's/Regex//g'*.html这样的正则表达式工具不适合html处理。因此,我正在寻找专注于HTML解析的解决方案,例如基于XPATH的//script
,//div[@class=“test class”]
实现此目的的最佳方法是什么?要使用xmlstarlet编辑当前目录中的所有.html文件:
xmlstarlet edit --inplace --omit-decl --delete '//script' --delete '//div[@class="test-class"]' *.html
请参阅:xmlstarlet编辑--help
这可能有助于处理损坏的html文件:
xmlstarlet format --recover --html file.html |\
xmlstarlet edit --omit-decl --delete '//script' --delete '//div[@class="test-class"]' > new.html
我建议使用XML/HTML解析器(xmlstarlet,xmllint…)。如果您的问题包括一个具有简明、可测试的样本输入和预期输出的示例,那么我希望您能得到帮助。谢谢@Cyrus。但是xmlstarlet
的问题是,它对html格式非常敏感,并且会产生错误,例如打开和结束标记不匹配
,找不到开始标记html的结尾
。它没有任何内置的html规范化工具,我也看不到在将html文件传递给xmlstarlet之前如何格式化html文件的简单方法。@AlexDasata在将文件传递给xmlstarlet之前,您可以先通过html Tidy运行这些文件