XPath的简单介绍以及使用

XPath 是一门在 XML 文档中查找信息的语言。XPath它可以用来在 XML 文档中对元素和属性进行遍历。

要使用xpath首先需要安装 lxml,在终端输入如下命令即可:pip install lxml

       什么是xpath?

        首先先来介绍下xml,它是用来存储和传输数据使用的。
        和html的不同有以下的两点:
        (1)html用来显示数据,xml是用来传输数据
        (2)html标签是固定的,xml标签是自定义的
        xpath用来在xml中查找指定的元素,它是一种路径表达式
        常用的路径表达式:
        // : 不考虑位置的查找
        ./ : 从当前节点开始往下查找
        @ : 选取属性
        示例如下:
/bookstore/book :选取根节点bookstore下面所有直接子节点book
//book :选取所有book
bookstore//book :查找bookstore下面所有的book
/bookstore/book[1] :bookstore里面的第一个book
/bookstore/book[last()] :bookstore里面的最后一个book
/bookstore/book[position()<3] :前两个book
//title[@lang]: 所有的带有lang属性的title节点
//title[@lang='eng']  所有的lang属性值为eng的title节点

* : 任何元素节点

为了使用xpath大致查找页面上满足条件的部分

可以在浏览器上安装xpath插件:只需要将xpath插件拖动到谷歌浏览器扩展程序中即可。
启动和关闭插件的命令ctrl +: shift + x
(1)通过属性进行定位
        //input[@id="kw"]
        //input[@class="bg s_btn"]
(2) 层级定位
    索引定位
        //div[@id="head"]/div/div[2]/a[@class="toindex"]
        【注】索引从1开始
        //div[@id="head"]//a[@class="toindex"]
        【注】双斜杠代表下面所有的a节点,不管位置
    逻辑运算
        //input[@class="s_ipt" and @name="wd"]
    模糊匹配
        contains
            //input[contains(@class, "s_i")]
            所有的input,有class属性,并且属性中带有s_i的节点
            //input[contains(text(), "爱")]
        starts-with
            //input[starts-with(@class, "s")]
            所有的input,有class属性,并且属性以s开头
    取文本
        //div[@id="u1"]/a[5]/text()  获取节点内容

        //div[@id="u1"]//text()      获取节点里面不带标签的所有内容

    取属性
        //div[@id="u1"]/a[5]/@href

  在代码中进行使用方法如下

        from lxml import etree
        两种方式使用:将html文档变成一个对象,然后调用对象的方法去查找指定的节点
        (1)本地文件
            tree = etree.parse(文件名)
        (2)网络文件
            tree = etree.HTML(网页字符串)
            ret = tree.xpath(路径表达式)

            注意:ret是一个列表

        #将所用满足条件的内容进行拼接起来形成string

        ret = tree.xpath('//div[@class="**"]')
        string = ret[0].xpath('string(.)')
        print(string.replace('\n', '').replace('\t', ''))


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值