lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高
XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索
XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择
XPath于1999年11月16日成为W3C标准,它被设计为供XSLT、XPointer以及其他XML解析软件使用,更多的文档可以访问其官方网站:https://www.w3.org/TR/xpath/
windows系统下的安装:
linux下安装:
验证安装:
(1)读取文本解析节点
(3)获取所有节点
返回一个列表每个元素都是Element类型,所有节点都包含在其中
如要获取li节点,可以使用//后面加上节点名称,然后调用xpath()方法
(4)获取子节点
通过/或者//即可查找元素的子节点或者子孙节点,如果想选择li节点的所有直接a节点,可以这样使用
(5)获取父节点
我们知道通过连续的/或者//可以查找子节点或子孙节点,那么要查找父节点可以使用..来实现也可以使用parent::来获取父节点
(6)属性匹配
在选取的时候,我们还可以用符号进行属性过滤。比如,这里如果要选取为的节点,可以这样实现:
(7)文本获取
我们用XPath中的text()方法获取节点中的文本
(8)属性获取
使用@符号即可获取节点的属性,如下:获取所有li节点下所有a节点的href属性
(9)属性多值匹配
如果某个属性的值有多个时,我们可以使用contains()函数来获取
(10)多属性匹配
另外我们还可能遇到一种情况,那就是根据多个属性确定一个节点,这时就需要同时匹配多个属性,此时可用运用and运算符来连接使用:
(11)XPath中的运算符
or
或 age=19 or age=20 如果age等于19或者等于20则返回true反正返回false and 与 age>19 and age<21 如果age等于20则返回true,否则返回false mod 取余 5 mod 2 1 | 取两个节点的集合 //book | //cd 返回所有拥有book和cd元素的节点集合 + 加 6+4 10 - 减 6-4 2 * 乘 6*4 24 div 除法 8 div 4 2 = 等于 age=19 true != 不等于 age!=19 true < 小于 age<19 true <= 小于或等于 age<=19 true > 大于 age>19 true >= 大于或等于 age>=19 true此表参考来源:http://www.w3school.com.cn/xpath/xpath_operators.asp
(12)按序选择
有时候,我们在选择的时候某些属性可能同时匹配多个节点,但我们只想要其中的某个节点,如第二个节点或者最后一个节点,这时可以利用中括号引入索引的方法获取特定次序的节点:
这里使用了last()、position()函数,在XPath中,提供了100多个函数,包括存取、数值、字符串、逻辑、节点、序列等处理功能,它们的具体作用可参考:http://www.w3school.com.cn/xpath/xpath_functions.asp
(13)节点轴选择
XPath提供了很多节点选择方法,包括获取子元素、兄弟元素、父元素、祖先元素等,示例如下:
以上使用的是XPath轴的用法,更多轴的用法可参考:http://www.w3school.com.cn/xpath/xpath_axes.asp
(14)案例应用:抓取TIOBE指数前20名排行开发语言
XPath的更多用法参考:http://www.w3school.com.cn/xpath/index.asp
python lxml库的更多用法参考:http://lxml.de/
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1020.html