XPATH使用总结
2015-07-11 11:51
176 查看
最近公司里需要写一些爬虫项目,所以去接触学习了xpath的内容。在w3c上给出了xpath的语法,但是我感觉不全,而且讲得也不详细,我又去网上找了一些文章,总结一下。
这几个都是比较常用的,能解决基本近乎所有的选择。我要说的就是从/或者//开始的路径是绝对路径,从.或者..开始的路径是相对路径。直接写出nodename,属于绝对定位。
接下来说点比较特殊的定位方法。
//div[div='请按“回车”键发起检索']
表示选取所有包含子元素div的text域='请按“回车”键发起检索'的div元素,呵呵是不是看着有点绕口,那看一个简单一点的。
//div[span]
表示选取包含子元素span的div元素,再回头看上面的应该明白的了把。
//div[contains(@id,'王尼玛')]
表示属性id字段中含有'王尼玛'这三个字样的div元素,这里的属性还有很多,class,value,只要是xml里面出现的都可以使用。
//div[@id='王尼玛']
表示属性id='王尼玛'的div元素。
//div[contain(text(),"草泥马")]
//div[text()="草泥马")]
//*[@class="cc aaa"]
*号表示通配
略。
../.././*/div[contains(@class,'草泥马')]/div[@class='王尼玛']
匹配当前元素的父亲节点的父亲节点的当前节点下的任意元素节点下的class包含'草泥马'的div节点下的class='王尼玛'的div节点。
另外在w3c上给出了轴的使用,我这里觉得不是很好用,比较麻烦,有兴趣的同学可以去研究一下。
xptah 还可以使用 |选取多个
选择所有title 以及artist 元素
//title | //artist
选择所有title 以及artist 以及price 元素
//title | //artist | //price
这几个都是比较常用的,能解决基本近乎所有的选择。我要说的就是从/或者//开始的路径是绝对路径,从.或者..开始的路径是相对路径。直接写出nodename,属于绝对定位。
接下来说点比较特殊的定位方法。
//div[div='请按“回车”键发起检索']
表示选取所有包含子元素div的text域='请按“回车”键发起检索'的div元素,呵呵是不是看着有点绕口,那看一个简单一点的。
//div[span]
表示选取包含子元素span的div元素,再回头看上面的应该明白的了把。
//div[contains(@id,'王尼玛')]
表示属性id字段中含有'王尼玛'这三个字样的div元素,这里的属性还有很多,class,value,只要是xml里面出现的都可以使用。
//div[@id='王尼玛']
表示属性id='王尼玛'的div元素。
//div[contain(text(),"草泥马")]
//div[text()="草泥马")]
//*[@class="cc aaa"]
*号表示通配
略。
../.././*/div[contains(@class,'草泥马')]/div[@class='王尼玛']
匹配当前元素的父亲节点的父亲节点的当前节点下的任意元素节点下的class包含'草泥马'的div节点下的class='王尼玛'的div节点。
另外在w3c上给出了轴的使用,我这里觉得不是很好用,比较麻烦,有兴趣的同学可以去研究一下。
xptah 还可以使用 |选取多个
选择所有title 以及artist 元素
//title | //artist
选择所有title 以及artist 以及price 元素
//title | //artist | //price
相关文章推荐
- 大端法、小端法、网络字节序 转
- 密码发生器
- opencv矩阵运算(2)
- LeetCode Majority Element II
- 数据库基础面试
- 回文自动机
- 数据库基础面试
- 用Gradle组织layout文件
- 数据库(个人学习笔记,不断更新修改中)
- SQLServer删除/重建/禁用/启用外键约束
- 94 cigarettes
- LeetCode 1 Two Sum 排序后快速求解
- POJ-1007
- c++启动外部exe程序,出现闪退或缺少东西之类的问题,而双击exe没问题的情况
- 自动编译工具
- CodeIgniter学习笔记(十四)——CI中的文件上传
- 那些年不可错过的xcode插件
- linux下安装boost
- java 学习笔记
- 由malloc内存分配是否连续 引出的 一些概念