目前在学习xpath,需要取一个package信息,如图:
标题 "package"在span里面,比较方便取,用这个xpath就行:
//div[@id='artikeltabelle']/table/tbody/tr[1]/td[2]/span[@class='insertlabela' and text()='package:']
但是"package"的值没有任何标签包裹,父级标签就是<td>了,这个怎么取呢?
在chrome工具的控制台里面,使用了以下代码:
$x("//div[@id='artikeltabelle']/table/tbody/tr[1]/td[2]/text()").map(c=>c.textContent)
拿到了<td>里面的所有文本:
数了一下, SOT23在第8个,所以改一下就获取到了:
$x("//div[@id='artikeltabelle']/table/tbody/tr[1]/td[2]/text()[8]").map(c=>c.textContent)
但是这个"package"的位置是不稳定的,不一定在第8个,那么能不能两个结合定位呢?
经过一番修改,得到最终的xpath:
$x("//div[@id='artikeltabelle']/table/tbody/tr[1]/td[2]/span[@class='insertlabela' and text()='package:']/following-sibling::text()[1]").map(c=>c.textContent)
此处先使用span标签做定位,然后用xpath的轴:following-sibling,找到最近的下一个text(),就拿到了。
纯xpath写法:
//div[@id='artikeltabelle']/table/tbody/tr[1]/td[2]/span[@class='insertlabela' and text()='package:']/following-sibling::text()[1]