1

我们有大约 100 多个多年前编写的 HTML 文件,所有这些文件都包含内联 CSS。现在我们尝试从这些文件中提取 CSS 并为 CSS(样式表)创建单独的文件。所以在这个过程中,我们首先要清理我们所有的 HTML 文件(从它们中删除 CSS)。

我想知道是否有任何 perl 模块可以完成这项工作?我在 CPAN 上搜索,但没有得到任何信息。也许我的搜索查询与所需的模块不匹配。让我知道是否存在这样的模块。如果没有,那么我将为此编写一个模块。

4

2 回答 2

5

对于任何体面的 HTML 解析器,这应该是非常简单的(我是 的粉丝HTML::TokeParser,但还有其他的)。您将遍历 HTML 文档中的所有标记。当您找到一个具有style属性的 HTML 标记时(是否还有其他定义内联 CSS 的属性?我不是这里的专家),您将在输出标记之前删除该属性。您将不加修改地输出其他标记。

于 2012-09-19T04:23:55.237 回答
3

一个非常简单的方法是使用HTML::Restrict。只需告诉它您要保留哪些标签和属性,其他所有内容都将被删除。从文档:

use HTML::Restrict;

my $hr = HTML::Restrict->new();
$hr->set_rules({
    b   => [],
    img => [qw( src alt / )]
});

my $html = q[<body><b>hello</b> <img src="pic.jpg" alt="me" id="test" /></body>];
my $processed = $hr->process( $html );

# $processed now equals: <b>hello</b> <img src="pic.jpg" alt="me" />
于 2012-09-20T03:25:35.763 回答