Perl 如何使用Mojolicious从所有DOM元素中删除属性?

Perl 如何使用Mojolicious从所有DOM元素中删除属性?,perl,mojolicious,Perl,Mojolicious,我想从通过Mojolicious抓取的页面的所有元素中删除bgcolor属性 我的尝试如下: $dom->all_contents->each(sub { $_->attr('bgcolor' => undef) }); $dom->find('*')->each(sub { delete $_->{bgcolor}; }); 但这似乎不起作用 如何正确操作?据我所知,您要查找的DOM属性不是bgcolor,而是background colo

我想从通过Mojolicious抓取的页面的所有元素中删除bgcolor属性

我的尝试如下:

$dom->all_contents->each(sub { $_->attr('bgcolor' => undef) });
$dom->find('*')->each(sub {
    delete $_->{bgcolor};
});
但这似乎不起作用


如何正确操作?

据我所知,您要查找的DOM属性不是
bgcolor
,而是
background color
,css变体
bgcolor
不久前就不再流行了,它支持定义类并使用CSS设置对象的样式(包括其背景色)。请改为尝试使用背景色。

以下用于删除每个节点的
bgcolor
属性:

use strict;
use warnings;

use Mojo::DOM;

my $dom = Mojo::DOM->new(do {local $/; <DATA>});

for my $node ($dom->find('*')->each) {
    delete $node->{bgcolor};
}

print $dom;

__DATA__
<html>
<head>
<title>Hello background color</title>
</head>
<body bgcolor="white">
<h1>Hello world</h1>
<table>
<tr><td bgcolor="blue">blue</td></tr>
<tr><td bgcolor="green">green</td></tr>
</table>
</body>
</html>
  • 您还可以让Mojo处理迭代,如下所示:

    $dom->all_contents->each(sub { $_->attr('bgcolor' => undef) });
    
    $dom->find('*')->each(sub {
        delete $_->{bgcolor};
    });
    

  • 属性为
    bgcolor
    ,CSS属性为
    background color
    weeell我希望我正在抓取的页面整洁且所有-Borodin都是正确的属性为bgcolor,如中所示