首页 > 其他 > 详细

xpath的使用

时间:2019-12-02 23:26:10      阅读:90      评论:0      收藏:0      [点我收藏+]

什么是xml:

  定义:可扩展标记语言

  特点:xml具有自描述结构的半结构化数据。

  作用:xml主要设计总之是用来传输数据,还可以做为一些应用的配置文件

xml和html的区别:

  1. 语法要求不同:xml的语法要求更严格
    • html不区分大小写,xml区分
    • html的标签在某些条件下不严格,如果上下文清楚地显示出段落或者标签在何处结束,他可以省略为标签,但xml不能省略任何标签
    • 只有xml中有自闭标签。<a/>--只能有属性,没有内容的标签
    • 在html中属性名可以不带属性值,xml中必须带
    • 在xml中属性必须用引号括起来,html可以不加引号
  2. 作用不同:xml主要用来传输数据,html主要用来显示数据
  3. 标记不同:xml没有固定的标记,html的标签都要特殊含义,不能自定义

什么是xpath

  1. xpath是一种提取xml或者html内容的语法
  2. xml和html中的名词对比:xml 元素==html标签    标签的名字+属性+内容+后代标签
  3. xpath的语法:  
    1. 选取节点
      • nodename----选取此标签及所有子标签
      • /  ----从根节点开始找
      • // ----从任意位置开始找,不考虑他们的位置
      • .  ----当前节点
      • .. ----父节点
      • @----选取属性
      • text()----选取内容
    2. 谓语
      •   谓语的作用:限定
      • []----写在元素后面,用来限定这个元素
      • [@class="abc"]----class属性为abc的元素
      • [@id="aaa"]----id属性为aaa的元素
      • [@class]----选取有class属性的元素
      • [1]----第一个
      • [last()]----选最后一个
      • [last()-1]----倒数第二个
      • [position()>2]----选取位置大于2
        •   book[position()>2---从第三本书开始选取
      • [contains(属性名a,属性值b)]属性a包含b的标签
        •   book[contains(@href,‘baidu‘)] 
    1. 通配符 
      1.    *     ---任意元素
      2.  @*   ---任意属性   
    2.   选取若干路径
      1. //title|//price ---选取所有的title和price标签

练手:

from lxml import etree
#解析字符串
text = """
<div>
    <ul>
        <li class="item-0"><a href="link1.html">first item</a><li>
        <li class="item-1"><a href="link2.html">second item</a><li>
        <li class="item-inactive"><a href="link3.html">third item</a><li>
        <li class="item-1"><a href="link4.html">fourth item</a><li>
        <li class="item-0"><a href="link5.html">fifth item</a>
    </ul>
</div>
"""
#把字符串变成element对象
#就是讲一个xml文档字符串解析成html内容方法
tree = etree.HTML(text)
print(tree)#Element
#把element对象变成字符串
# print(etree.tostring(tree,pretty_print=True).decode(‘utf-8‘))
#element对象可以调用xpath方法来筛选内容
#选取标签内容
a_text = tree.xpath(//a[@href="link1.html"]/text())
# print(a_text)#[‘first item‘]
# element.xpath()-->返回值是一个list
#选取属性
a_href = tree.xpath(//ul/li[@class="item-inactive"]/a/@href)
print(a_href)
‘‘‘
<html>
  <body><div>
    <ul>
        <li class="item-0"><a href="link1.html">first item</a></li><li>
        </li><li class="item-1"><a href="link2.html">second item</a></li><li>
        </li><li class="item-inactive"><a href="link3.html">third item</a></li><li>
        </li><li class="item-1"><a href="link4.html">fourth item</a></li><li>
        </li><li class="item-0"><a href="link5.html">fifth item</a></li><li>
    </li></ul>
</div>
</body>
</html>‘‘‘

 

xpath的使用

原文:https://www.cnblogs.com/bug-king/p/11973159.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!