【XPath】浅谈XPath

XPath是我们解析与操作网页数据非常好用的一种工具,它也是也是一个独立的语言,类似正则表达式,下面就让我们一起简单学习一下它的语法与应用场景吧。

①XPath?

  1. 解析xml的一种语言(HTML是XML的子集),广泛用于解析HTML数据
  2. 几乎所有语言都能使用XPath,如Java和C语言
  3. 除了XPath还有其他手段用于xml解析,如beautifulSoup、lxmal、Dom、SAX、Dom4J、minixml等

②语法

  1. 层级:/ 直接子级,// 跳子级
  2. 属性:@ 属性访问
  3. 函数: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中使用!
参考:W3CMDN

形式一:搜索多个元素

var anodes=document.evaluate("这里放置XPath代码", document, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
//遍历搜索结果:
for(i=0;i<anodes.snapshotLength;i++)alert(anodes.snapshotItem(i));

形式二:搜索一个元素:

var anodes=document.evaluate("这里放置XPath代码", document, null,XPathResult.ANY_TYPE, null);
//遍历搜索结果:
anodes.iterateNext();//搜索到的第一个元素
//再次使用anodes.iterateNext();可得到搜索到的第二个元素

㈡使用selectNodes()方法

注意!该方法仅可在IE中使用
搜索多个元素:

nodeObject.selectNodes("这里放置XPath代码");

参考:W3C
搜索一个元素:

nodeObject.selectSingleNode("这里放置XPath代码");

参考:W3C

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据