0%

【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 形式一:搜索多个元素

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

形式二:搜索一个元素:

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

㈡使用selectNodes()方法

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

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

参考:W3C 搜索一个元素:

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

参考:W3C