博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xpath选择器简介及如何使用
阅读量:6785 次
发布时间:2019-06-26

本文共 4074 字,大约阅读时间需要 13 分钟。

xpath选择器简介及如何使用

一、总结

一句话总结:XPath 的全称是 XML Path Language,即 XML 路径语言,它是一种在结构化文档(比如 XML 和 HTML 文档)中定位信息的语言,XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

 

1、xpath如何使用?

19 xml=loadXMLDoc("/example/xmle/books.xml"); 20 path="/bookstore/book/title" 32 // code for Mozilla, Firefox, Opera, etc. 33 else if (document.implementation && document.implementation.createDocument) 34 { 35 var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); 36 var result=nodes.iterateNext(); 37 38 while (result)

 

2、插件如何使用?

其实所有的插件的使用无非就是以下步骤:

1、引入插件

2、调用函数

 

 

 

二、xpath选择器

XPath 的全称是 XML Path Language,即 XML 路径语言,它是一种在结构化文档(比如 XML 和 HTML 文档)中定位信息的语言,XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

 

 

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

 

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

 

因此,对 XPath 的理解是很多高级 XML 应用的基础。

 

 

1. 语法

1.1 HTML 实例文档

后面我们将以下面的 HTML 文档介绍 XPath 的使用 。

            
Example website
Name: My image 1
Name: My image 2
Name: My image 3
Name: My image 4
Name: My image 5

1.2 选取节点

下表是 XPath 常用的语法,实例对应的是上面的 HTML 文档。

表达式 描述 实例 结果
nodename 选取此节点的所有子节点 body 选取 body 元素的所有子节点
/ 从根节点选取 /html 选取根元素 html
// 匹配选择的当前节点,不考虑位置 //img 选取所有 img 元素,而不管它们在文档的位置
. 选取当前节点 ./img 选取当前节点下的 img 节点
.. 选取当前节点的父节点 ../img 选取当前节点的父节点下的 title
@ 选取属性 //a[@href=”image1.html”] 选取所有 href 属性为 “image1.html” 的 a 节点
    //a/@href 获取所有 a 节点的 href 属性的值

1.3 谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点,谓语嵌在方括号中。

路径表达式 结果
//body//a[1] 选取属于 body 子元素的第一个 a 元素
//body//a[last()] 选取属于 body 子元素的最好一个 a 元素
//a[@href] 选取所有拥有名为 href 的属性的 a 元素
//a[@href=’image2.html’] 选取所有 href 属性等于 “image2.html” 的 a 元素

 

2. 在 Python 中使用

python 中使用 XPath 需要安装相应的库,这里推荐使用 lxml 库。

代码示例:

# -*- coding: utf-8 -*-from lxml import etreehtml = """                    Example website                
"""
from lxml import etree soup = etree.HTML(html) page=soup.xpath('/html/head/base/@href') #从根节点开始选取 page=soup.xpath('/html/head//@href') #也可以这样选择结果是相同的 #//表示从当前节点开始选择,不必考虑位置。 #选取title下所有文本 page=soup.xpath("//title/text()") #选取HTML下所有a节点 page=soup.xpath('//a') #选取标签下属性为image.html的scr属性 page=soup.xpath("//a[@href='image1.html']/img/@src") #选取a标签下第三个href属性 page=soup.xpath("//a[contains(@href, '3')]/@href") #body最后一个a标签href属性 page=soup.xpath("//body//a[last()]/img/@src")
page=soup.xpath('//a[@class="active"][@id="value"]/img/@src') #多个属性定位

 

3.常用函数

 

除了索引、属性外,Xpath还可以使用便捷的函数来增强定位的准确性。下面试常用的几个函数:

 

 

 

<a class="menu_hot" href="/ads/auth/promote.html">应用推广</a>

 

 

#定位href属性中包含“promote.html”的所有a节点//a[contains(@href,'promote.html')]#元素内的文本为“应用推广”的所有a节点//a[text()='应用推广']#href属性值是以“/ads”开头的所有a节点//a[starts-with(@href,'/ads')]

参考:xpath选择器 - moon的博客 - CSDN博客

https://blog.csdn.net/qq_32942549/article/details/78400675

 

 

三、xpath使用实例

1、操作的xml(books.xml)

Everyday Italian
Giada De Laurentiis
2005
30.00
Harry Potter
J K. Rowling
2005
29.99
XQuery Kick Start
James McGovern
Per Bothner
Kurt Cagle
James Linn
Vaidyanathan Nagarajan
2003
49.99
Learning XML
Erik T. Ray
2003
39.95

 

 

2、需求及代码

选取所有 title

下面的例子选取所有 title 节点:

/bookstore/book/title
1  2  3 46 47 48 

 

3、结果

Harry Potter

Everyday Italian
Learning XML
XQuery Kick Start

 

你可能感兴趣的文章
我的友情链接
查看>>
我的友情链接
查看>>
配置IEEE802.3X流控制
查看>>
从濒临解散到浴火重生,OceanBase 这十年经历了什么?
查看>>
DHCP详解
查看>>
Mysql 在java 中的乱码
查看>>
linux下mysql命令
查看>>
Gitlab的使用
查看>>
Fartlek跑-间歇跑
查看>>
怎样在window phone8 中通过webBrowser调用第三方验证登陆接口
查看>>
Kalman原理(很详细)本文转载自《学习OpenCV》清华大学出版社 于诗琪 刘瑞祯 译...
查看>>
linux/centos6 系统时间同步 同步系统时间 ntpdate
查看>>
第一次开启51CTO博客
查看>>
升职还需犹豫?
查看>>
我的友情链接
查看>>
CMD框变小字体显示乱码
查看>>
正则总结:JavaScript中的正则表达式
查看>>
HAProxy 详解
查看>>
7.1文件查找之find命令详解
查看>>
Linux系统管理-(11)-网络配置ifcfg家族
查看>>