@
MrhuangSTR 同病相怜啊楼主,我最近也是在搞这些 ZF 的数据,不过我好像解决了,找到了一种通用的方式
我用的 xpath ( xpath 还是挺好使的),把键和值分开来获取,最后再 zip 到一起
原理是:td 位置为奇数则是键,为偶数则是值
(键为土地编号、面积等,值为据图数值)
获取键的表达式:"//table//table//td[position() mod 2 = 1]"
获取值的表达式:"//table//table//td[position() mod 2 = 0]"
但是,提取之后会发现有的键是没有对应值的(比如“主要用途”那栏的值是空的)
这时就要把没有对应值的键单独提出来
观察几个网站发现没有对应值的键的相似之处为:都有 colspan="3"或者 colspan="6"的属性
所以
提取的 xpath 表达式为:'//table//table//td[position() mod 2 = 1][@colspan="3" or @
colspan="6"]'
最后把没有对应值的键都从所有键中剔除或者设为空,其他键值对一一对应即可
.......
.......
最后发现出了点小问题
呃呃呃,:面积"那栏键值是竖着的,不是向其他的那样横着的,也就是上述的最终键值对被污染了
但是对"面积"这对键值单独处理下,应该问题不大,思路是用 xpath 获取到 text()为"面积"的 td 节点,再通过这个节点的父级 tr 的下一位置 tr 下的 td 获取到面积的数值,再从键列表中删除"面积",值列表中删除面积的值
最后终于大功告成