2011-10-30 14 views
1

私はPerlでHTMLパーサーを構築しています。私は、HTML要素が兄弟なしの要素であるかどうかを知りたいと思います。ここで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 

任意のアイデア間違っている可能性がどのような:

私はエラーを取得していますか?

はここで、それはあなたのコードの多くを知らずに言うのは難しいです

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

eval 
{ 
    $mech->get($url); 
}; 
if ([email protected]) 
{ 
    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"; 
} 

おかげ

+0

[HTML-Tree](http://search.cpan.org/dist/HTML-Tree/)を使用していますか? – cjm

+0

いいえ、私はHTML :: Treebuilderを使用しています – Kiran

+2

[HTML :: TreeBuilder](http://search.cpan.org/perldoc?HTML::TreeBuilder)は[HTML-Tree](http:// search .cpan.org/dist/HTML-Tree /)ディストリビューション(あなたがリンクをクリックしたときに見たように)、HTMLツリーを使用しています。 – cjm

答えて

1

Perlでコードスニペットですが、私は@PageSectionsは、いくつかの家醸造モジュールのオブジェクトが含まれている推測しています、 $ _が完全に異なるものを指し示すように何かが起こるということです。私は

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

の代わりに行くだろう。

+0

これは実際には役に立ちませんでしたが、私はPagesセクションを次のように定義しました:my @PageSections = $ root-> look_down( 'Perlは大文字と小文字が区別されますので、PerlはHTML :: TreebuilderではなくHTML :: TreeBuilderです。クラス '=> qr/bold1 $ /); – Kiran

+0

私はちょうどあなたが使用しているメソッドを探知し、あなたはHTML :: TreeBuilderを使っているようですね?それはあなたの質問にそれを含めることを傷つけることはありません。また、エラーがどこで発生したのかについても言及していません。私は 'my $ temp1 = $ ps-> right() - > as_text;で失敗すると推測します。なぜなら、right()はundefを返すからです。 'my $ temp0 = $ ps-> right();定義された$ temp0を出力してみてください。 "\ n": "定義されていません。 ' – flesk

+0

はい、私はHTML :: Treebuilderを使用しています。私は専門家ではありません。あなたの提案を確認した直後に印刷します。 – Kiran

関連する問題