1

我正在使用 HTML::Query 在 Perl 中解析 HTML 表。我想浏览表格的每一行并查看某个单元格。但是,当我使用此查询时...

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

...我遇到了一个问题,即最外层表的每一行都不是单独表示的。我的意思是,虽然这个数组的第一个元素是我正在使用的最外层表中的第一行,但第二个元素指的是第一行中的另一个表行,因为其中一个单元格中有一个全新的表。

进一步解释;当我尝试遍历它时:

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

也许您正在使用一个 DOM 来收集a内的所有tr子级(这是浏览器通常所做的)。tabletbody

这行得通吗?

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