XPath表达式

XPath表达式是查询标记语言的方法(是选取XML或HTML中节点node的方法,节点通常是指XML/HTML中元素),XPath通过路径表达式(Path Expression)来选择节点信息,跟文件系统路径一样用/符号来分割路径

同一个节点有绝对路径与相对路径两种写法;1.绝对路径必须以/起首,后面紧跟根节点/step/step/...;2.相对路径step/step/...

.				当前节点
..			当前节点父节点
nodename		节点名称:选择该节点的所有子节点
/				选择根节点
//			选择任意节点
@ 			选择属性  

除此之外还可通过给表达式附加条件来选择指定数据,所有筛选条件均可附在一个[]符号中

/nbaplayer/team[1]			选择节点nbaplayer下第一个team子元素
//city[@name]				选择所有带有name属性的city节点

1.选择节点实例

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
  <book>
    <title lang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <title lang="eng">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>

bookstore			选取bookstore元素所有子节点
/bookstore		选取根节点bookstore,绝对路径
bookstore/book	选取所有属于bookstore子元素的 book元素,相对路径
//book			选择所有book子元素,不管它们在文档中的位置
bookstore//book	选择所有属于bookstore元素后代的book元素,不管位于bookstore下什么位置
//@lang			选取所有名为lang的属性
text()			提取标签中的文本

2.Xpath谓语条件

谓语条件即路径表达式的附加条件,都写在方括号[]中,表示对节点进行进一步筛选

/bookstore/book[1]				选择bookstore下第一个book子元素
/bookstore/book[last()]		选择bookstore最后一个book子元素
/bookstore/book[last()-1]		选择bookstore倒数第二个book子元素
/bookstore/book[position()<3]	选择bookstore前两个book子元素
//title[@lang]				选择所有具有lang属性的title节点
//title[@lang='eng']			选择所有lang属性值等于"eng"的title节点
/bookstore/book[price]			选择bookstore的book子元素且被选中的book元素必须带有price子元素
/bookstore/book[price>35.00]	选择bookstore的book子元素且被选中book元素price子元素值(内容)必须大于35
/bookstore/book[price>35.00]/title		表示在上例结果集中,选择title子元素
/bookstore/book/price[.>35.00]	选择值大于35的"/bookstore/book"的price子元素

3.通配符

*					匹配任何元素节点
@*				匹配任何属性值
node()			匹配任何类型节点
//*				选择文档中所有元素节点
/*/*				选择第二层所有元素节点
/bookstore/*		选择bookstore所有元素子节点
//title[@*]		选择所有带属性的title元素

4.选择多个路径

//book/title | //book/price   同时选择book元素的title子元素和price子元素

5.Chrome获取xpath

1:将鼠标放在想提取的内容上

2:然后右键“检查”

3:浏览器右侧会自动定位到内容的源代码上

4:在源代码上点击右键,然后弹出一个列表,选择“copy”

5:在弹出的选项中,选择“Copy Xpath”

例:丽沙花都小区名的xpath路径,直接复制得到的内容为://*[@id="list-content"]/div[2]/div[1]/h3/a ,但放到html_nodes()时要注意,需要将list-content的双引号改为单引号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值