zoukankan      html  css  js  c++  java
  • xpath相关巩固

    python爬虫xpath的语法
    
    
    XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。
    
    XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。
    
    因此,对 XPath 的理解是很多高级 XML 应用的基础。
    
    这个是w3c上关于xpath的介绍,可以看出xpath是在xml文档中查询信息的语言
    
     
    
    在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
    
    根节点在xpath中可以用“//”来啊表示
    
    XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
    
    接下来一个例子
    
     
    
    <?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>
    这个是基本的语法(掌握了这些基本都可以抓取到):
    
    表达式	描述
    nodename	选取此节点的所有子节点。
    /	从根节点选取。
    //	从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
    .	选取当前节点。
    ..	选取当前节点的父节点。
    @	选取属性。
     
    
     
    
    实例
    
    在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:
    
    路径表达式	结果
    bookstore	选取 bookstore 元素的所有子节点。
    /bookstore	
    选取根元素 bookstore。
    
    注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
    
    bookstore/book	选取属于 bookstore 的子元素的所有 book 元素。
    //book	选取所有 book 子元素,而不管它们在文档中的位置。
    bookstore//book	选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
    //@lang	选取名为 lang 的所有属性。
    谓语(Predicates)
    
    谓语用来查找某个特定的节点或者包含某个指定的值的节点。
    
    谓语被嵌在方括号中。
    
    实例
    
    在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
    
    路径表达式	结果
    /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']	选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
    /bookstore/book[price>35.00]	选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
    /bookstore/book[price>35.00]/title	选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。
    选取未知节点
    
    XPath 通配符可用来选取未知的 XML 元素。
    
    通配符	描述
    *	匹配任何元素节点。
    @*	匹配任何属性节点。
    node()	匹配任何类型的节点。
    实例
    
    在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
    
    路径表达式	结果
    /bookstore/*	选取 bookstore 元素的所有子元素。
    //*	选取文档中的所有元素。
    //title[@*]	选取所有带有属性的 title 元素。
    选取若干路径
    
    通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
    
    实例
    
    在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
    
    路径表达式	结果
    //book/title | //book/price	选取 book 元素的所有 title 和 price 元素。
    //title | //price	选取文档中的所有 title 和 price 元素。
    /bookstore/book/title | //price	
    选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。
    
     
    
    这些就是xpath的语法内容
    
    在运用到python抓取时要先转换为xml
    
    Import lxml       #首先要先导入库
    
    etree.HTML()  
    

      

  • 相关阅读:
    Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)
    Luogu 1314 【NOIP2011】聪明的质检员 (二分)
    Luogu 1315 【NOIP2011】观光公交 (贪心)
    Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
    Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
    Luogu 1514 引水入城 (搜索,动态规划)
    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
    Luogu 1437 [HNOI2004]敲砖块 (动态规划)
    Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
    HDU 1176 免费馅饼 (动态规划)
  • 原文地址:https://www.cnblogs.com/pyxiaomangshe/p/7741540.html
Copyright © 2011-2022 走看看