使用 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;
我需要解析一些 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;