xpath_1

作者: Canes | 来源:发表于2020-04-21 18:39 被阅读0次

选取节点

表达式 描述
foo 选取此节点的所有子节点
/ 根节点选取
// baz
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
<?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/book
//book
bookstore//book
//@lang

谓语

  • 查找指定节点(谓语被嵌在方括号中)

    /bookstore/book[1]
    /bookstore/book[last()]
    /bookstore/book[last()-1]
    /bookstore/book[position()<3]
    //title[@lang]
    //title[@lang='eng']
    /bookstore/book/[price>35.00]
    /bookstore/book[price>35.00]/title
  • 选取未知节点

    * 匹配任何元素节点
    @* 匹配任何属性节点
    node() 匹配任何类型的节点
  • 选取若干路径

    //book/title | //book/price
    //title | //price
    /bookstore/book/title | //price
  • 节点关系

    父(parent) 每个元素以及属性都有一个父
    子(Children) 元素节点可有零个、一个或多个子
    同胞(Sibling) 拥有相同的父的节点
    先辈(Ancestor) 某节点的父,父的父
    后代(Descendant) 某个节点的子,子的子

XPath轴

  • 轴可定义相对于当前节点的节点集

    轴名称 结果
    ancestor 选取当前节点的所有先辈(父、祖父等)
    ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
    attribute 选取当前节点的所有属性
    child 选取当前节点的所有子元素
    descendant 选取当前节点的所有后代元素(子、孙等)
    descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身
    following 选取文档中当前节点的结束标签之后的所有节点
    namespace 选取当前节点的所有命名空间节点
    parent 选取当前节点的父节点
    preceding 选取文档中当前节点的开始标签之前的所有节点
    preceding-sibling 选取当前节点之前的所有同级节点
    self 选取当前节点
  • 步的语法:

    轴名称::节点测试[谓语]
    
    例子 结果
    child::book 选取所有属于当前节点的子元素的 book 节点
    attribute::lang 选取当前节点的 lang 属性
    child::* 选取当前节点的所有子元素
    attribute::* 选取当前节点的所有属性
    child::text() 选取当前节点的所有文本子节点
    child::node() 选取当前节点的所有子节点
    descendant::book 选取当前节点的所有 book 后代
    ancestor::book 选择当前节点的所有 book 先辈
    ancestor-or-self::book 选取当前节点的所有 book 先辈以及当前节点(如果此节点是 book 节点)
    child::*/child::price 选取当前节点的所有 price 孙节点
  • 其它

    //div[contains(@class,'job_detail')] contains:有时候某个属性中包含了多个值,那么可以使用contains函数
    htmlElement = etree.HTML(text)
    print(etree.tostring(htmlElement,encoding='utf-8').decode("utf-8"))
    解析html字符串:使用lxml.etree.HTML进行解析
    htmlElement = etree.parse("tencent.html")
    print(etree.tostring(htmlElement, encoding='utf-8').decode('utf-8'))
    解析html文件:使用lxml.etree.parse进行解析

相关文章

  • xpath_1

    选取节点 表达式描述foo选取此节点的所有子节点/根节点选取//baz.选取当前节点..选取当前节点的父节点@选取...

网友评论

      本文标题:xpath_1

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