1

HTML::Query を使用して Perl で HTML テーブルを解析しています。テーブルの各行を調べて、特定のセルを見たいと思います。しかし、このクエリを使用すると...

my @resultsrows = $query->query('table#player_matches.tabelle_grafik tr')->get_elements();

...この最も外側のテーブルの各行が単独で表されないという問題に遭遇しました。つまり、この配列の最初の要素は、作業している最も外側のテーブルの最初の行ですが、セルの 1 つに完全に新しいテーブルがあるため、2 番目の要素はその最初の行内の別のテーブル行を参照します。

詳細については、それをループしようとすると:

for(my $i = 1; $i < @resultsrows; $i++) {
    @currentrow = $query->query('td span'); ## The cell I am looking for is the only one with a span.
    if($currentrow[0]->attr('title') eq $searchterm) {
        $returnedIndex = $i;
    }
}

このクエリで使用できる CSS セレクターで、最も外側のテーブルのみを選択してこの問題を回避できるものはありますか? HTML::Tree はこれに役立ちますか?

編集:>直接の子のみを示すために使用しようとしましたが、行を収集していません:my @resultsrows = $query->query('table#player_matches.tabelle_grafik > tr')->get_elements();

4

1 に答える 1

3

おそらく、 a内の aのすべてのtr子を収集する DOM を使用している可能性があります(これはブラウザーが通常行うことです)。tabletbody

これは機能しますか?

@resultsrows = $query->query('table#player_matches.tabelle_grafik > tbody > tr')->get_elements();
于 2012-12-19T04:51:08.820 に答える