我需要解析一些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。
我该如何实现?
答案 0 :(得分:2)
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;