Xpath

XPath使用规则与操作介绍
本文介绍了XPath,它是在XML文件中查找信息的规则/语言,可根据元素或属性遍历。还提及了XPath开发工具,如XMLQuire、XPath Helper等。阐述了选取节点的方法,介绍了谓语的使用,以及XPath的一些操作,如“|”等。

XPath

XPath 开发工具

  • 开源的XPath表达式编辑工具:XMLQuire
  • Chrome插件:XPath Helper
  • Firefox插件: XPath Checker

选取节点

  • nodename: 选取此节点的所有子节点

  • /: 从根节点开始选取

      /Student:没有结果
      /School:选取School节点
    
  • //: 选取节点,不考虑位置

      //age: 选取出三个节点,一般组成列表返回
    
  • . : 选取当前接待你

  • … :选取当前节点的父亲节点

  • @:选取属性

  • xpath中查找一般按照路径方法查找,一下是路径表示方法

     School/Teacher:返回Teacher节点
     School/Student: 返回两个Student节点
     //Student:  选取所有Studetn的节点,不考虑位置
     School//Age:选取School后代中所有Age节点
     //@Other: 选取Other属性
     //Age[@Detail]:  选取带有属性Detail的Age元素
    

谓语-Predicates

  • /School/Student[1]: 选取School下面的第一个Student节点
  • /School/Student[last()]: 选取School下面的最后一个Student节点
  • /School/Student[last()-1]: 选取School下面的倒数第二个Student节点
  • /School/Student[position()< 3]: 选取School下面的前二个Student节点
  • //Student[@score]: 选取带有属性score的Student节点
  • //Student[@score=“99”]: 选取带有属性score并且属性值是99的Student节点
  • //Student[@score]/Age: 选取带有属性score的Student节点的子节点Age

XPath的一些操作

  • |: 或者

      //Student[@score] | //Teacher: 选取带有属性score的Student节点和Teahcer节点
    
  • 其余不常见XPath运算符号包括+, - , *, div, >, <

09-26
XPath 即 XML 路径语言(XML Path Language),是一种用于在 XML 或 HTML 文档中定位元素的查询语言。以下是关于 XPath 的详细介绍和使用方法: ### 简介 XPath 基础教程适合初学者,能帮助学习者掌握 XPath 元素定位的基本原理和常用技巧。学习完相关课程后,可熟练使用 XPath 在 HTML 或 XML 文档中定位元素,为后续的 Web 自动化测试、数据提取等工作打下坚实基础 [^1]。 ### 使用方法 - **基本路径表达式**: - `/title`:表示根节点下的所有 `title` 标签。 - `//div`:表示根节点下的所有 `div` 标签。 - **谓语(Predicates)**:用于筛选节点。例如 `./div[@class="text"]` 表示当前节点下,属性 `class` 为 `"text"` 的所有 `div` 节点。而 `./div[@class="text"].text()` 则是获取这些 `div` 节点的文本内容 [^2]。 ### 应用场景 - **Web 爬虫**:从网页中提取特定的数据,如新闻标题、商品价格等。 - **Web 自动化测试**:定位页面元素,模拟用户操作,如点击按钮、输入文本等。 ### 代码示例 以下是使用 Python 和 `lxml` 库来演示 XPath 的使用: ```python from lxml import etree # 示例 HTML 文档 html = """ <!DOCTYPE html> <html> <body> <div class="text">This is a sample text.</div> <div>Another div without class.</div> <title>Sample Page</title> </body> </html> """ # 解析 HTML 文档 tree = etree.HTML(html) # 使用 XPath 定位元素 title = tree.xpath('/html/head/title') divs = tree.xpath('//div') text_divs = tree.xpath('.//div[@class="text"]') # 输出结果 print("Title:", title[0].text if title else "No title found") print("All divs:", [div.text for div in divs]) print("Divs with class 'text':", [div.text for div in text_divs]) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值