标签和下拉组合的XPath

时间:2015-06-03 13:19:40

标签: html xml xpath web-scraping

我正在尝试创建一个XPath,它允许我验证表中标签为“X”的行是否具有正确的下拉值。

标签的XPath是

//*[@id="mainContent"]/table/tbody/tr/td/center/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[14]/td[1]/b

下拉列表的XPath是

//*[@id="mainContent"]/table/tbody/tr/td/center/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[14]/td[2]/select

如何修改这些以便我只需要一个XPath?

2 个答案:

答案 0 :(得分:1)

假设" X"标签是独一无二的:

//td[. = 'X']/following-sibling::td[1]/select

或者,您可以保留一些,

//*[@id="mainContent"]//td[. = 'X']/following-sibling::td[1]/select

或全部,

//*[@id="mainContent"]/table/tbody/tr/td/center/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[14]/td[1]/following-sibling::td[1]/select
根据页面上的数据,必要时需要满足原始路径,以满足一般性/特异性。

答案 1 :(得分:1)

类似于kjhughes'回答,但我会用

//td[1][b = 'X']/../td[2]/select

[b = 'X']更接近OP所要求的内容,因为td除标签外可能还有其他内容(包括仅限空白的节点)。使用td[1] / td[2]确保我们使用前两列,就像OP一样。