首页 > 解决方案 > 使用 MOJO::DOM 查找具有特定 id 模式的 div 下的内容

问题描述

我需要解析一些 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 及其内容。

我怎么能做到这一点?

标签: perlmojo

解决方案


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

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

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

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

或者使用更标准的 Perl:

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

推荐阅读