美文网首页
XPath的基本使用

XPath的基本使用

作者: 午夜丶小学徒 | 来源:发表于2018-10-28 15:59 被阅读0次

一、xpath简介

XPath即为[XML]路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。

二、xpath安装

  • 终端安装
- pip install lxml
  • chrome浏览器安装
- chrome商店搜索,搜索<XPath Helper>,下载并添加该扩展程序。

三、xpath基本使用

  • 导包l
- from lxml import etree
  • 用etree加载html
1)加载本地html文件
    - html_tree = etree.parse("./test.html")
2)直接加载获取到的html网页
    - html_tree = etree. HTML(html)

四、xpath基本语法

  • 根据树型结构获取目标节点
ret = html_tree.xpath("/html/body/ol/li") # 返回一个列表
ret = html_tree.xpath("/html/body/ol/li[1]") # 返回一个列表 该列表中取第一个对象
ret = html_tree.xpath("/html/body/div/div[2]/a") # 返回一个列表
  • 找节点的内容与属性
1. 找节点的对应的内容值
    ret = html_tree.xpath("/html/body/div/ol[1]/li[1]/text()") # 返回一个列表
2. 找节点对应的属性值
    ret = html_tree.xpath("/html/body/div/div[2]/a/@href") # 返回一个列表
  • 定位
1. 层级定位
    ret = html_tree.xpath("//li/text()") # '/'代表节点前面有一层  '//'代表节点前面有若干层
2. 属性定位
    - 获取页面中有id属性的li
        ret = html_tree.xpath("//li[@id]") 
    - 获取所有的class值为hehe的li
        ret = html_tree.xpath("//li[@class='hehe']")
    > 注意!!!若一个节点的某个属性有多个值,如class属性, 一定要把这些值写全
  • 模糊匹配
- 获取所有class值为以h开头的li
   ret = html_tree.xpath("//li[starts-with(@class,'h')]")
- 获取所有class值中含有a的li
   ret = html_tree.xpath("//li[contains(@class,'a')]")
  • 逻辑运算
- 查找所有class值为hehe并且id为tata的li
   ret = html_tree.xpath("//li[@class='hehe' and @id='tata']")
- 查找所有class值为hehe或者包含a的li
   ret = html_tree.xpath("//li[@class='hehe' or contains(@class,'a')]")
  • 换根查找
- 列表去第0个
   obj = html_tree.xpath("//div[@id='pp']")[0]
- 以obj为根,继续向内部查找
   ret = obj.xpath(".//li/text()") # '.'必须带上,否则都将默认以html为根查找

相关文章

网友评论

      本文标题:XPath的基本使用

      本文链接:https://www.haomeiwen.com/subject/zpwptqtx.html