Я пытаюсь сделать то, что было бы 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);
не было в исходном вопросе, я упустил это, не зная, что это проблема
Проблема была в 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";
}
HTML::TagParser
действительно используетURI::Fetch
он мог быть вызван дважды, чтобы быть уверенным, снова добавил эту строку и имел тот же вывод Dumper, что означало, что есть проблема в разборе.