Как проверить, является ли элемент HTML конечным узлом? - PullRequest
1 голос
/ 30 октября 2011

Я создаю парсер HTML на Perl. Я хотел бы знать, является ли элемент HTML элементом без сибилингов.

Вот HTML, я бы хотел разобрать:

<span class="bold1">A:</span> ELementA<br />
<span class="bold1">B:</span> <a href="mailto:admin" class="bold1">mailto:admin</a><br />
<span class="bold1">C </span> 01/12<br />
<span class="bold1">D:</span> ELementC<br />
<span class="bold1">E:</span> ElementD<br />
<span class="bold1">F:</span> ElementE<br />

Как проверить, является ли элемент конечным элементом.

Я получаю ошибку:

Can't call method "as_text" without a package or object reference at 

Есть идеи, что может быть не так?

Вот фрагмент кода в Perl,

my $mech = WWW::Mechanize->new( autocheck => 1 );

eval 
{
    $mech->get($url);
};
if ($@) 
{
    print "Error connecting to URL $url \n";
    exit(0);
}

my $root = HTML::TreeBuilder->new_from_content(decode_utf8($mech->content));

my @PageSections = $root->look_down( 
            sub { 
                return (
                ($_[0]->tag() eq 'span' ) and 
                ($_[0]->attr('class')  =~ m/bold1/i) )

            }); 

my $temp2;
my $temp3;

for my $ps (@PageSections)
{
    #  my $temp1= $ps->right()->as_text;
    $temp2= $ps->as_text;

    my $temp3=ref $ps->right();
    # 
    print defined $temp3 ? "defined \n" : "not defined\n";
}

Спасибо

1 Ответ

1 голос
/ 30 октября 2011

Трудно сказать, не зная больше вашего кода, но я предполагаю, что @PageSections содержит объекты какого-то домашнего модуля, и что-то там происходит, чтобы $ _ указывал на что-то совершенно другое.Я бы пошел с

for my $ps (@PageSections)
{
    my $temp1= $ps->right()->as_text;
    my $temp2= $ps->as_text;
    print "$temp2  " . $temp1 . " \n";
}

вместо.

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