我是靠谱客的博主 高大猫咪,最近开发中收集的这篇文章主要介绍Xpath的介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今日语:实在是不明白xpath的语法,边参考边记录吧~

一.Xpath的概念:

  1. 它使用路径表达式在XML文档中进行导航
  2. 包含一个标准数据库
  3. 是XSLT中的 主要元素
  4. 是W3C的标准

二.Xpath的节点

共有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及根节点

  • 而XML文档是被当做节点树看待,所以之前还是要认真了解XML的相关知识;而树的根是根节点。下面是一个XML文档:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <bookstore> -------------------------------------------->文档节点
    <book>
    <title lang="en">Harry Potter</title> -----<lang="en">---属性节点
    <author>J K. Rowling</author> ------------------------>元素节点
    <year>2005</year>
    <price>29.99</price>
    </book>
    </bookstore>
  • 节点关系:其实就像我们在生活中的亲戚关系,一层层滴~(简图)
    这里写图片描述
  • Xpath的语法:是通过路径表达式来选取XML文档中的节点或者节点集。
    用表格表达一下:
    这里写图片描述
    这里写图片描述
    带有谓语的表达式列表:
    这里写图片描述

三、来个实例看看吧~这个是另外放在.html(我这里是hi.html)文件中的

<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"><span class="bold">third item</span></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></li>
     </ul>
 </div>

四、用代码实现一下:

from lxml import etree


#读取外部文件
html = etree.parse('./hi.html')
#转换类型
result = etree.tostring(html)
#转换成html代码
html = etree.HTML(result)
#最后转换成string类型
result = etree.tostring(html)
print(result.decode("utf-8"))

#1.显示etree.parse()返回类型
print("---1",type(html))

#2.打印<li>标签的元素集合
result = html.xpath('//li')
print("---2",result)

#3.继续获取<li> 标签的所有 class属性
result = html.xpath('//li/@class')
print("---3",result)

#4.继续获取<li>标签下hre f为 link1.html 的 <a>标签
result = html.xpath('//li/a[@href="link1.html"]')
print("---4",result)

#5.获取<li> 标签下的所有 <span> 标签
result = html.xpath('//li//span')
print("---5",result)

#6.获取最后一个 <li> 的 <a> 的 href
result = html.xpath('//li[last()]/a/@href')
print("---6",result)

#7.获取倒数第二个元素li的内容,也就是fourth item
result = html.xpath('//li[last()-1]/a/text()')
print("---7",result)

#8.获取 class 值为 bold 的标签名
result = html.xpath('//*[@class="bold"]')
print("---8",result)

效果图依次:
这里写图片描述

总结一下:在hi.html文件中是没有头标签的,当写入此代码:(html = etree.HTML(result))的时候,会自动加入html标签,有截图可看到

详细请看:

W3School官方文档:http://www.w3school.com.cn/xml/index.asp
W3School官方文档:http://www.w3school.com.cn/xpath/index.asp

最后

以上就是高大猫咪为你收集整理的Xpath的介绍的全部内容,希望文章能够帮你解决Xpath的介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部