爬虫

xpath

2018-09-27  本文已影响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(.)')

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

上一篇下一篇

猜你喜欢

热点阅读