XPath

一. 什么是xml

  1. 定义: 可扩展标记性语言
  2. 特点: xml是具有自描述结构的半结构化数据
  3. 作用: xml主要设计宗旨是用来传输数据,它还可以作为配置文件.

二. xml和html的区别

  1. 语法要求不同: xml的语法要求更严格.
    1. html不区分大小写, xml区分
    2. html有时可以省略尾标签,xml不能省略任何标签,严格按照嵌套首尾结构.
    3. 在html中属性吗可以不带属性值,xml必须带属性值.
    4. 在xml中属性必须用引号引起来,html可以不加引号.
  2. 作用不同:
    1. html主要设计用来显示数据以及更好的显示数据
    2. xml主要设计宗旨就是传输数据.
    3. 标记不同: xml没有固定标记,html的标记都是固定的,不能自定义.

三. XPath

  1. 什么是XPath
    xpath是一种筛选html或者xml页面元素的语法.

  2. xml和html的一些名词:
    元素, 标签, 属性, 内容

  3. xml的两种解析方法:
    dom和sax

  4. xpath语法:

    1. 选取节点:
    节点名选取此节点的所有子节点
    /从根节点开始选取
    //从任意节点开始,不考虑他们的位置
    .从当前节点开始找
    从父节点开始找
    @选取属性
    text()选取内容
    1. 谓语: 起限定作用,限定它前面的内容.

      []写在谁的后面,就限定谁,一般用于限定元素或标签.
      “//book[@class=‘abc’]”

    [@class]选取有class属性的
    [@class=‘abc’]选取class属性为abc
    [contains(@href,‘baidu’)]选取href属性包含baidu的标签
    [1]选取第一个
    [last()]选取最后一个
    [last()-1]选取倒数第二个
    [position()>2]跳过前两个
    ‘//book[price>30]’选取子标签中price大于30的book标签
    1. 通配符
    *匹配任意节点
    @*匹配任意属性
    1. 选取若干路径
      | ----左边和右边的xpath选的内容都要----and
  5. lxml模块-----Python处理xml和html的模块.

    1. 解析html代码.

      from lxml import etree
      
      
      text = '''
      	html 页面内容
      '''
      tree = etree.HTML(text) # 返回值就是一个element对象
      # element对象有xpath方法,可以通过xpath表达式来筛选内容.
      a_contents = tree.xpath('//li[@class="item-1"]/a/text()')
      # 将element对象变成字符串的方法
      html_str = etree.tostring(tree, pretty_print=True).decode('utf-8')
      

      element对象用xpath来筛选,返回值都是一个list
      xptah表达式最后一个时一个元素(标签),list中都是element元素
      xpath表达式最后一个是属性,list都是属性字符串
      xpath表达式最后一个时内容,list都是内容字符串

    2. 解析xml或者html文件:

      from lxml import etree
      # parse方法是按照xml的方式来解析,如果语法出问题,就会报错.
      html = etree.parse('demo.html')
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值