查看: 186|回复: 0

对于XPATH的理解需要多动手写多测试

[复制链接]
论坛徽章:
12
Oracle研习者初级
日期:2014-09-19 14:07:02nosql徽章
日期:2017-06-15 17:32:54linux徽章
日期:2017-04-27 17:53:02抽样调查徽章
日期:2016-05-12 11:57:26perl徽章
日期:2015-09-25 17:35:50C++徽章
日期:2014-11-06 17:46:08scala徽章
日期:2014-11-06 14:55:16比特币徽章
日期:2014-11-06 14:53:58树莓派
日期:2014-09-19 15:22:08R研习者中级
日期:2014-09-19 14:18:07Oracle研习者初级
日期:2014-09-19 14:07:42Java徽章
日期:2018-01-04 17:15:14
发表于 2018-5-28 08:30 | 显示全部楼层 |阅读模式
对于在网页源代码中查找特定的元素,多年之前一个网页特定信息采集的项目是用正则表达式做的。
但那个网站的html相当的不规范,当时是这样理解,现在看来可能是为了防止别人采集数据而故意做成的不规范。
当时对于正则表达式也不了解,都是边用边学,后来学了JQuery之后,了解JQuery的选择器之后,发现用来获取
网页中的元素真是方便很多,不用写正则表达式,而且JQuery是为网页而生的。现在学习了XPATH,感觉大部分表达式还是比较简单的,只是少部分需要多动手写多测试,而不是靠感觉,当多试了几次之后,或者准备其他的html页面再测试时,才发现跟第一次想象的、以为的并不一样。特别是根节点,老师说是html节点,我倒觉得是document节点。
还有//table//tr[1]//input[1],这个表达式就是多次测试之后,才慢慢理解的。解释如下:
选择根节点document,下的所有"子孙后代节点"中的table节点,再下面的所有"子孙后代节点"中的tr节点,
再下面的每个层级(所有匹配的tr节点)中的第1个tr节点(子tr节点中的第1个tr节点,孙tr节点中的第1个tr节点,以此类推,都只选择第1个),再下面的所有"子孙后代节点"中的input节点,再选择每个层级(所有匹配的input节点)中的第1个input节点(子input节点第1个input节点,孙input节点中的第1个input节点,以此类推,都只选择第1个)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2018-9-25 13:16 , Processed in 0.098841 second(s), 29 queries .