XPath是我们解析与操作网页数据非常好用的一种工具,它也是也是一个独立的语言,类似正则表达式,下面就让我们一起简单学习一下它的语法与应用场景吧。
①XPath?
- 解析xml的一种语言(HTML是XML的子集),广泛用于解析HTML数据
- 几乎所有语言都能使用XPath,如Java和C语言
- 除了XPath还有其他手段用于xml解析,如beautifulSoup、lxmal、Dom、SAX、Dom4J、minixml等
②语法
- 层级:/ 直接子级,// 跳子级
- 属性:@ 属性访问
- 函数:contains()、text()等
③使用XPath
Ⅰ.在浏览器中使用XPath:
打开任意网页→按下F12进入开发者模式→按下Ctrl+F弹出搜索框→输入XPath语法进行搜索 例子:
XPath代码
含义
//div
查找所有的div
//div[@class=”A”]
查找类名为A的div
//div[@class=”A”]//div[contains(@class,”B”)]
查找类名为A的div中类命包含字符B的div
//div[@class=”A”]//div[contains(@class,”B”)]/a/text()
查找类名为A的div中类命包含字符B的div中a标签包含的文字
Ⅱ.在JS中使用XPath查找标签
㈠使用documnet.evaluate()方法
注意!该方法不可在IE中使用! 参考:W3C、MDN 形式一:搜索多个元素
1 | var anodes=document.evaluate("这里放置XPath代码", document, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); |
形式二:搜索一个元素:
1 | var anodes=document.evaluate("这里放置XPath代码", document, null,XPathResult.ANY_TYPE, null); |
㈡使用selectNodes()方法
注意!该方法仅可在IE中使用 搜索多个元素:
1 | nodeObject.selectNodes("这里放置XPath代码"); |
参考:W3C 搜索一个元素:
1 | nodeObject.selectSingleNode("这里放置XPath代码"); |
参考:W3C