从命令行编辑 HTML 文件

从命令行编辑 HTML 文件

sed我正在寻找一种类似于or 的从命令行编辑 HTML 文件的方法awk,但使用类似于jqor 的路径表达式小狗。特别是,换行符、空格和其他格式细节应该不重要。

所以我想说“删除它后面的<body>第一个<p>标签之间的所有内容,并将其替换为此文本”或“将每个<b>...替换</b><p font-style=italic>... </p>,将文本保留在中间”。文件的其余部分应保持不变。

一个用于 Perl、Python 或 Haskell 的库也可以,我可以用几行代码轻松完成此操作(但我更喜欢命令行工具)。

背景:我想用它来清理大量带有尴尬格式、不良语言标签等的 epub 文件。

答案1

我不知道有什么可以满足你的要求,而且构建一些东西需要很多工作。对于初学者来说,你必须构建一个编译器,使用yacc或类似的东西,解析您的命令,然后将它们传递给其他代码以实际执行转换。

XLST可能有用,但我对此表示怀疑。它位于 XML 之上,而 HTML 是一种太不规则的标记语言,无法适应严格的语法:特别是如果您开始在其之上转储 CSS。

我会选择珀尔 HTML::解析器图书馆(或者也许是它的朋友之一)超文本标记语言模块树(如果他们有专门的工具来完成您的常见任务)。它将 HTML 文档解析为一个小的内部数据库树,然后您可以对其进行操作并将其转储出来。我一直用它来做一些事情,例如:摆脱所有内嵌框架标签和内容;摆脱全部HTML 标签,但以纯文本形式打印出接近预期格式的内容;而且真的很复杂屏幕刮刀引擎。

它使用起来非常简单,可以为您完成所有繁重的工作。请参阅CPAN页面的示例。该发行版还附带了更多示例来执行诸如删除某些标签/元素和/或属性之类的操作。

记得在石器时代珀尔统治了网络,并且主要关注于使用 HTML,因此 Perl Monks 几十年来一直在磨练他们的 HTML 工具。

相关内容