Perl HTML :: Элемент look_down для извлечения следующего тега после соответствующего тега - PullRequest
0 голосов
/ 25 января 2020

Я использую HTML :: TreeBuilder для обработки HTML файлов. В этих файлах у меня могут быть списки определений, где есть термин «База данных» с определением «Имя базы данных». Имитация html выглядит следующим образом:

#!/usr/bin/perl -w

use strict;
use warnings;
use HTML::TreeBuilder 5 -weak;
use feature qw( say );

my $exampleContent = '<dl>  
    <dt data-auto="citation_field_label"> 
    <span class="medium-bold">Language:</span> 
    </dt> 
    <dd data-auto="citation_field_value"> 
    <span class="medium-normal">English</span>
    </dd>
    <dt data-auto="citation_field_label"> 
    <span class="medium-bold">Database:</span> 
    </dt> 
    <dd data-auto="citation_field_value"> 
    <span class="medium-normal">Data Archive</span>
    </dd> 
    </dl>';

my $root = HTML::TreeBuilder->new_from_content($exampleContent);

my $dlist = $root->look_down("_tag" => "dl");

foreach my $e ($dlist->look_down("_tag" => 'dt', "data-auto" => "citation_field_label")) {
   if ($e->as_text =~ m/Datab.*/) {
    say $e->as_text; # I have found "Database:" 'dt' field
    # now I need to go to the next field 'dd' and return the value of that
  } 
}

Мне нужно определить, из какой базы данных поступил файл, и вернуть значение.

Я бы хотел сказать что-то вроде say $dlist->right()->as_text;, когда я идентифицировал <dt> с "Database:" в нем, но я не знаю как. Ваши мысли будут высоко оценены.

1 Ответ

1 голос
/ 25 января 2020

Вы были почти там. Использование

$e->right->as_text;

Дает мне «Архив данных».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...