无法选择某些特定的xpath ...(html table,scrapy,xpath)

时间:2015-06-03 08:47:08

标签: html xpath scrapy

我试图从这里可以找到的表中搜索数据(使用scrapy):

http://www.bettingtools.co.uk/tipster-table/tipsters

当我在以下xpath中解析响应时,我的蜘蛛会起作用:
//*[@id="imagetable"]/tbody/tr

页面上的每个表都共享该ID,因此我基本上抓取了所有表数据。

但是,我只想要当前月份的表格数据(右栏中的表格)。

当我尝试使用xpath更具体时,即使它看起来是正确的,我也会收到无效的xpath错误。我试过了:

 - //*[@id="content"]/[contains(@class, "column2")]/[contains(@class, "table3")]/[@id="imagetable"]/tbody/tr
 - //*[@id="content"]/div[contains(@class, "column2")]/div[contains(@class, "table3")]/[@id="imagetable"]/tbody/tr
 - //*[@id="content"]/div[2]/div[1]/[@id="imagetable"]/tbody/tr

此外,当我尝试在带有chrome的页面上选择特定表格的xpath时,我得到//*[@id="imagetable"].

我错过了一些明显的东西吗?为什么上述3个xpath示例我尝试无效?

由于

2 个答案:

答案 0 :(得分:1)

使这3个无效xpath的原因是具有此模式的部分:

/[predicate expression here]

上面的xpath错过了选择将应用谓词的节点。它应该是这样的:

/*[predicate expression here]

以下是一些有效的例子:

1. /table[@id="imagetable"]
2. /div[contains(@class, "column2")]
3. /*[contains(@class, "table3")]

对于此特定任务,您可以尝试使用以下xpath从table内的<div class="column2">中选择行:

//div[@class='column2']//table[@id="imagetable"]/tbody/tr

答案 1 :(得分:0)

检查我的anwser Selenium automation- finding best xpath。简而言之,通过浏览器检查它,浏览器可以给出U唯一定位器,然后检查它。