当前位置:   article > 正文

python lxml xpath_PYTHON XPath与lxml类库

python lxml xpath_PYTHON XPath与lxml类库

XPath,我们可以用先将HTML文档转换成XML文档,然后用XPath查找HTML节点或元素。

50a2000482b7fc861d80

XML文档实例

509f0004f3a5a9e98ec9

HTML DOM模型示例

HTML DOM定义了访问和操作HTML文档的标准方法,以树结构方式表达了HTML文档。

50a500027b286ae208fe

XML的节点关系

1.父(Parent)

每个元素以及属性都有一个父。

下面是一个简单的XML例子中,book元素时title、author、year以及price

50a00004e600da734647

4.先辈(Ancestor)

某节点的父、父的父,等等。

在下面的例子中,title元素的先辈是book元素和bookstore元素:小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!

50a40002e3237c19450e

XPath 开发工具

开源的XPath表达式编辑工具:XML Quire(XML格式文件可用)

Chrome插件Xpath Helper

Firefox插件Xpath Checker

选取节点

XPath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和我们常规的电脑文件系统中看到的表达式非常相似。

下面列出了最常用的路径表达式:

表达式描述

nodename

选取此节点的所有子节点

/

从根节点选取

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

.

选取当前节点。

..

选取当前节点的父节点

@

选取属性

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式描述

bookstore

选取bookstore元素的所有子节点。

/bookstore

选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book

选取属于bookstore的子元素的所有book元素

//book

选取所有book子元素,而不管它们在文档中的位置

bookstore//book

选择属于bookstore元素的后代的所有bok元素,而不管它们位于bookstore之下的什么位置

//@lang

选取名为lang的所有属性。

谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个特定的值的节点,被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

路径表达式结果

/bookstore/book[1]

选取属于bookstore子元素的第一个book元素。

/bookstore/book[last()]

选取数据bookstore子元素的最后一个book元素

/bookstore/book[last()-1]

选取属于bookstore元素的倒数第二个book元素

/bookstore/book[position()<3]

选取最前面的两个属于bookstore元素的子元素book元素

//title[@lang]

选取所有拥有名为lang的属性的title元素

//title[@lang="eng"]

选取所有title元素,且这些元素拥有值为eng的lang属性

/bookstore/book[price>35.00]

选取所有bookstore元素的book元素,且其中的price元素的值必须大于35.00

/bookstore/book[price>35.00]/title

选取bookstore元素中的book元素的所有title元素,且其中的price元素的值必须大于35.00

选取未知节点

XPath通配符可用来选取未知的XML元素。

通配符描述

*

匹配任何元素节点

@*

匹配任何属性节点

node()

匹配任何类型的节点

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式结果

/bookstore/*

选取bookstore元素的所有子元素

//*

选取文档中的所有元素

title[@*]

选取所有带属性的title元素

选取若干路径

通过在路径表达式中使用"|"运算符,您可以选取若干个路劲。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式结果

'//book/title | //book/price'

选取book元素的所有title和price元素。

//title | //price

选取文档中的所有title和price元素

/bookstore/book/title | //price

选取属于bookstore元素的book元素的title元素,以及文档中的所有price元素

XPath的运算符

509f0004fa67728b1d5c

50a10004dc8547b2be89

50a2000489b65d3fa750

文件读取:

除了直接读取字符串,lxml还支持从文件里读取内容。我们新建一个hello.html文档:

50a2000489d9053b2e24

XPath实例测试

1.获取所有的

标签

50a40002e3c26e44035d

509f0004fad487e6e709

50a200048a3b2bce17f5

7.获取倒数第二个元素的内容

50a200048a67f8a271cd

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/884405
推荐阅读
相关标签
  

闽ICP备14008679号