Поиск содержимого в div с конкретными шаблонами идентификаторов с помощью MOJO :: DOM - PullRequest
0 голосов
/ 04 мая 2019

Мне нужно разобрать некоторые коды HTML. Шаблоны идентификатора тега:

<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», за которыми следует число, а также его содержимое.

Как мне этого добиться?

1 Ответ

3 голосов
/ 04 мая 2019

Селектор E [foo ^ = "bar"] сопоставляет любой элемент с атрибутом "foo", начинающимся с "bar". Таким образом вы можете использовать:

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

$rows будет Mojo :: Collection объектов Mojo :: DOM, представляющих каждый соответствующий элемент и его соответствующее содержимое. Например, чтобы получить список совпадающих идентификаторов:

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

Или с более стандартным Perl:

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