xpath

作者: 郭祺迦 | 来源:发表于2018-09-27 13:04 被阅读0次

    1、xml学习

     xml:是一种数据格式,和json的位置一样,前后端交互

     xml和html的区别:

          1>:xml:被设计用来传输和存储数据;html:被设计用来显示数据    

           2>:xml标签可以自定义,html是官方规定好的标签

          3>:xml是纯本文语言

    xml的语法:

        1>:必须有关闭标签

        2>:标签名对大小写敏感

        3>:属性值必须加双引号

    2、xpath

        xpath:用来解析xml数据的;和html有啥关系呢?

            html和xml都是标记语言,有人搞了一套库,叫做lxml,实现功能来解析数据

        xpath最有用的路径表达式

    常见的路径表达式:

        bookstore/book  :从bookstore下面查找book,book是直接子节点

        bookstore//book:从bookstore下面查找所有的book

        //book:从整个文档中查找所有的book节点

        //@lang:查找所有的有lang属性节点

        bookstore/book[1]:取出第一个直接子节点book

        bookstore/book[last()]:取出最后一个直接子节点book

        bookstore/book[last()-1]:取出倒数第二个直接子节点book

    bookstore/book[position()<3]:取出前两个直接子节点book

    //title[@lang='eng']:选取lang属性值为eng的title属性

    *:匹配任何元素节点

    @*:匹配所有属性节点

           bookstore/*:选取bookstore元素的所有直接子节点

            //*:查找所有节点

            //title [@*]:查找有属性title节点

    函数:

        contains  starts-with  

    3、xpath在html中的应用

    1>:属性筛选

    例:input[@id='kw']

    注意:如果属性值多,需要全部复制进去

    2>:层级和索引筛选

    例:

    3>:取文本和属性

    属性:

    文本内容:

    ·    4>:函数

    starts-with

    属性以XX开头

    文本以XX开头

    contains

    属性包含XX:

    文本包含XX:

    用法截图:

    4、在代码中使用

    首先:需要导入

    from  lxml   importetree

    过程:首先根据etree里面的方法将html格式的字符串搞成一个对象  tree,然后就可以使用tree里面的方法xpath。

      本地文件:etree.parse('文件名')

      网络文件: etree.HTML('网页字符串')

      xpath方法返回的是列表,需要通过下标进行提取

      如果标签里面还有子标签,获取使用方式:

       ret = tree.xpath('//div[@class="star"]//text()')

       然后手动拼接列表即可

       ret = tree.xpath('//div[@class="star"]')[0].xpath('string(.)')

       直接得到标签里面所有的内容

    相关文章

      网友评论

        本文标题:xpath

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