仅针对直接子项的Perl HTML查询

时间:2012-12-19 03:42:10

标签: perl css-selectors

我正在使用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();

1 个答案:

答案 0 :(得分:3)

也许您正在使用一个DOM来收集trtable的所有tbody个孩子(这是浏览器通常会做的)。

这有用吗?

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