Mojo :: DOM извлекает абзац после определенного предыдущего абзаца

#perl #mojo-dom

#perl #mojo-dom

Вопрос:

Просто впервые использую этот Mojo:: DOM и испытываю проблемы с извлечением информации на основе предыдущего тега. Ищу способ захватить «описание».

 #!/usr/bin/perl
require v5.10;
use feature qw(say);
use Mojo::DOM;

my $html = q(<p><strong>Description</strong></p><p>The description</p> <p><strong>Usage</strong></p><p>How to use this tool</p>);

my $dom = Mojo::DOM->new( $html );

say $dom->find('p strong')->map('text')->join("n"); # Description

  

Ответ №1:

Чтобы получить первый, вы можете сделать это

 say $dom->at('p strong')->parent->next->text;
  

Или получить их все

 say $dom->find('p strong')->map(sub { $_->parent->next->text })->join("n");
  

Комментарии:

1. Спасибо за вашу помощь. В итоге я использовал что-то вроде: for my $e (Mojo::DOM->new($data)->find('a, p strong, p')->each) { say $e->all_text;}