使用 MOJO::DOM 查找具有特定 ID 模式的 div 下的内容

Finding the contents under div with specific id patterns using MOJO::DOM

我需要解析一些 HTML 代码。标签ID的格式为:

<tr id="date">.....</tr>
<tr id="band01"><td>field1</td><td>field2</td></tr>
<tr id="band02">...contents...</tr>
.....
<tr id="(others">.....

我正在使用 PERL Mojo::DOM 解析器,并希望提取名称以 "band" 开头后跟数字的所有实际 ID 及其内容。

我怎样才能做到这一点?

E[foo^="bar"] 选择器匹配具有 "foo" 属性且以 "bar" 开头的任何元素。因此你可以使用:

my $dom = Mojo::DOM->new($html);
my $rows = $dom->find('tr[id^="band"]');

$rows 将是 Mojo::Collection 个 Mojo::DOM 个对象,表示每个匹配元素及其各自的内容。例如,要获取匹配的 ID 列表:

my @ids = $rows->map(attr => 'id')->each;

或使用更标准的 Perl:

my @ids = map { $_->{id} } @$rows;