我的XPath的XPath选择第一台
page.search("//table[@class='campaign']//table")
返回两个表。
我只需要选择第一个表格。此行不起作用:
page.search("//table[@class='campaign']//table[1]")
如何只选择第一个表?
我的XPath的XPath选择第一台
page.search("//table[@class='campaign']//table")
返回两个表。
我只需要选择第一个表格。此行不起作用:
page.search("//table[@class='campaign']//table[1]")
如何只选择第一个表?
这也给我带来了困扰。我仍然不完全知道你的解决方案为什么不起作用。然而,这应该:
page.search("//table[@class='campaign']/descendant::table[1]")
编辑:作为the docs说,
“的位置路径
//para[1]
并不意味着相同位置 路径/descendant::para[1]
后者选择第一个后裔 para元素;前者选择 他们父母的第一个para孩子的所有后代para元素。“
感谢您的问题,我终于明白了为什么这个工作方式:)。所以,根据你的结构和需求,这应该起作用。
而是使用XPath表达式选择第一个匹配的元素,你可以找到所有这些,然后削减下来:
first_table = page.search("//table[@class='campaign']//table").first
...或更好,但只选择了首先使用at
:
first_table = page.at("//table[@class='campaign']//table")
还要注意你的表达可以通过使用CSS选择器语法更简单地发现:
first_table = page.at("table.campaign table")
它的工作原理,感谢你 – megas 2012-04-05 19:40:02