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 ItalianLearning XMLXQuery Kick Start