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()方法
形式一:搜索多个元素
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