本文继续沿用第三章的 XML 示例文档。

选取价格高于30的 price 节点

# 从父节点进行筛选
>>> root.xpath('//book[price>30]/price')
[<Element price at 0x2d888c8>] # 直接对 price 进行筛选
>>> root.xpath('//price[text()>30]')
[<Element price at 0x2d888c8>]

选取 price 高于 30 的 title 节点

# 从父节点开始选取
>>> root.xpath('//book[price>30]/title')
[<Element title at 0x2d88878>] # 从节点本身选取
>>> root.xpath('//price[text()>30]//preceding-sibling::title|following-sibling::title')
[<Element title at 0x2d88878>] # 从 price 到父节点选取
>>> root.xpath('//price[text()>30]//parent::*/title')
[<Element title at 0x2d88878>]

处理命名空间

>>> xml = """<?xml version="1.0" encoding="utf8"?>
<bookstore xmlns:a="http://www.google.com">
<a:book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</a:book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>""" # 获取根节点
>>> root = etree.fromstring(xml) # 选取不带命名空间的 book 元素
>>> root.xpath('//book')
[<Element book at 0x2d88940>] # 选取所有的 book 元素,无论是否含有命名空间
# 其中 namespace 参数为一个字典对象,映射了命名空间前缀,本例中直接使用了文档原有的命名空间与前缀。
>>> root.xpath('//a:book|//book', namespaces=root.nsmap)
[<Element {http://www.google.com}book at 0x2d88878>, <Element book at 0x2d88940>]

[XPath] XPath 与 lxml (五)XPath 实例的更多相关文章

  1. 爬虫入门之爬取策略 XPath与bs4实现(五)

    爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪 ...

  2. xpath教程 2 - lxml库

    xpath教程 2 - lxml库 这些就是XPath的语法内容,在运用到Python抓取时要先转换为xml. lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HT ...

  3. Xpath语法与lxml库的用法

    BeautifulSoup 已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法. 1.安装 pip install lxml 2 ...

  4. Xpath语法与lxml库

    1. Xpath 1 )什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 2) X ...

  5. Python爬虫11-XML与XPath概述及lxml库的应用

    GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/ ...

  6. 12.Python爬虫利器三之Xpath语法与lxml库的用法

    LXML解析库使用的是Xpath语法: XPath 是一门语言 XPath可以在XML文档中查找信息 XPath支持HTML XPath通过元素和属性进行导航 XPath可以用来提取信息 XPath比 ...

  7. 爬虫之lxml - etree - xpath的使用

    # 解析原理: # - 获取页面源码数据 # - 实例化一个etree对象,并且将页面源码数据加载到该对象中 # - 调用该对象的xpath方法进行指定标签定位 # - xpath函数必须结合着xpa ...

  8. Python爬虫 XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  9. XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  10. xpath教程 1 - 什么是XPath

    xpath教程 1 什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. W3School官方 ...

随机推荐

  1. Qt封装QTcpServer参考资料--QTcpServer多线程实现

    目的:每个客户端连接的tcpSocket分别分配一个专门的线程来处理. 实现时分别继承QTcpServer和QTcpScoket实现出自己需要的类. 继承QTcpServer为每个客户端连接时分配线程 ...

  2. MYSQL查询前30条数据

    , LIMIT 接受一个或两个数字参数. 参数必须是一个整数常量. 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量, 第二个参数指定返回记录行的最大数目. 初始记录行的偏移量是 (而不是 )

  3. LEARNING TO NAVIGATE IN COMPLEX ENVIRONMENTS

    任务是地图里面导航,让agent从起始点到达指定位置. 用了supervised learning + reinforcement learning + lstm 用supervised learni ...

  4. 浅谈main(),int main(),void main(),int main(void)四者之间的区别

    1,main():相当于 int main() 2,int main():int 是main() 函数的返回类型.这表明main()函数返回的值是整数且授受任何数量的参数. 3,void main() ...

  5. e824. 获得和设置JSplitPane中的子组件

    // Create a left-right split pane JSplitPane hpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, lef ...

  6. Oracle错误IMP-00010: 不是有效的导出文件, 头部验证失败 分类: Oracle 2015-07-09 13:56 20人阅读 评论(0) 收藏

    Oracle 11g的dmp备份文件导入到Oracle 10g,出现错误信息: Import: Release 10.2.0.1.0 - Production on 星期四 7月 9 13:47:04 ...

  7. Java虚拟机性能管理神器 - VisualVM(2) 入门

    一下载VisualVM 最新版本下载 历史版本下载 二启动VisualVM 三VisualVM用户目录 四VisualVM窗口 1应用程序窗口 2详情窗口 五VisualVM插件   Java虚拟机性 ...

  8. T4 好用的Vs扩展

  9. 炫酷霸气的HTML5/jQuery应用及源码

    也许在5年前,HTML5还是一种很前卫的技术,大家还只是将它当做实验来看待,更别说产品应用了.但是现在HTML5已经非常流行,无论从PC端还是移动端,HTML5都扮演着非常重要的角色.今天我们要分享的 ...

  10. js中的坑

    for in vs hasOwnProperty == === 对象比较用===,值比较用==. 严格运算用=== http://www.zhihu.com/question/31442029 著作权 ...