我正在抓取一个html文档,其结构一直在变化。 Css类名甚至改变,所以我不能依赖它。但是,有一件事永远不会改变,值总是包含在一个完全如下的子树中:
<span>
<span>
<span>wanted value</span>
<span></span>wanted value
</span>
</span>
这可以表示为XPath表达式吗?
它不匹配:
<span>
<span>
<span> 1, one too little </span>
<span> 2 </span>
<span> 3, one too many </span>
<span> 4, two too many </span>
</span>
</span>
我计划使用lxml for Python来做这件事。
答案 0 :(得分:3)
如果所需值的位置始终位于第三级跨度上,则xpath如下:
//span/span/span[1]
应用于下一个HTML文档时:
<html>
<head>
<title>Your Title</title>
</head>
<body>
<div>
<span>
<span>
<span>wanted value</span>
<span></span>
</span>
</span>
</div>
<div>
<span>
<span>
<span>wanted value</span>
<span></span>
</span>
</span>
</div>
</body>
</html>
结果将是:
wanted value
wanted value
修改强> 的
如果您只希望第三级上的第一个跨度的值在第三级上的总跨度等于2时可以使用以下XPath:
//span/span[count(span) = 2]/span[1]