gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:14:21 25 4
gpt4 key购买 nike

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

我的尝试如下:

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

但这似乎行不通。

我该怎么做才正确?

最佳答案

以下使用Mojo::DOM删除每个节点的 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>

输出:

<html>
<head>
<title>Hello background color</title>
</head>
<body>
<h1>Hello world</h1>
<table>
<tr><td>blue</td></tr>
<tr><td>green</td></tr>
</table>
</body>
</html>

注意事项:

  1. 可以使用CSS Selectors将返回的节点限制为仅包含特定属性的节点:

    for my $node ($dom->find('[bgcolor]')->each) {
  2. 也可以让 Mojo 像下面这样处理迭代:

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

关于perl - 如何使用 Mojolicious 从所有 DOM 元素中删除属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com