我试图从这里可以找到的表中搜索数据(使用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示例我尝试无效?
由于
答案 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唯一定位器,然后检查它。