GetElementsByClassName - Perl?

0

Я пытаюсь сделать то, что было бы getElementsByClassName в Javascript, в perl, но это не работает, из приведенного ниже кода я получаю END, он не попадает в цикл foreach, что я делаю неправильно, и там лучший способ, чем HTML :: TagParser?

...
my $html = HTML::TagParser->new( "****.html" );
$topic = URI::Fetch->fetch($topic);

my @list = $html->getElementsByClassName( 'separateur_links' );
foreach my $elem ( @list ) {
    my $text = $elem->innerText;
    print $text . "\n";
}
print "END\n";
...

Редактировать:

Когда я использую Data::Dumper print Dumper($html); Я получаю: $VAR1 = bless( {}, 'HTML::TagParser' );

Изменить 2:

$topic = URI::Fetch->fetch($topic); не было в исходном вопросе, я упустил это, не зная, что это проблема

Теги:

1 ответ

2
Лучший ответ

Проблема была в URI::Fetch->fetch я использовал его для других тестов и забыл удалить его:

my $topic = "*******.html";
print "** Checking available links in : " . $topic . "\n";
# $topic = URI::Fetch->fetch($topic);

my $html = HTML::TagParser->new( $topic );
print Dumper($html);
my @list = $html->getElementsByClassName( 'separateur_links' );
foreach my $elem ( @list ) {
    my $text = $elem->innerText;
    print $text . "\n";
}
  • 0
    Нет, я не понял, я думаю, вы ошиблись, проблема была в этой строке, я прокомментировал ее, и код сработал. Если HTML::TagParser действительно использует URI::Fetch он мог быть вызван дважды, чтобы быть уверенным, снова добавил эту строку и имел тот же вывод Dumper, что означало, что есть проблема в разборе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню