5. xpath中节点选择的工具

  • Chrome插件 XPath Helper

    • 下载地址:https://pan.baidu.com/s/1UM94dcwgus4SgECuoJ-Jcg 密码:337b
  • Firefox插件 XPath Checker

注意: 这些工具是用来学习xpath语法的,他们都是从elements中匹配数据,elements中的数据和url地址对应的响应不相同,所以在代码中,不建议使用这些工具进行数据的提取

6. xpath语法

知识点

  • 掌握元素路径的相关方法
  • 掌握获取获取属性的方法
  • 掌握获取文本的方法

我们将在下面的例子中使用这个 XML 文档。

<bookstore><book><title lang="eng">Harry Potter</title><price>29.99</price>
</book><book><title lang="eng">Learning XML</title><price>39.95</price>
</book></bookstore>

6.1 选取节点

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

使用chrome插件选择标签时候,选中时,选中的标签会添加属性class="xh-highlight"

下面列出了最有用的表达式:

表达式 描述
nodename 选中该元素。
/ 从根节点选取、或者是元素和元素间的过渡。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
text() 选取文本。

实例

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

路径表达式 结果
bookstore 选择bookstore元素。
/bookstore 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//book/title/@lang 选择所有的book下面的title中的lang属性的值。
//book/title/text() 选择所有的book下面的title的文本。

练习:

接下来我们听过豆瓣电影top250的页面来练习上述语法:https://movie.douban.com/top250

  • 选择所有的h1下的文本

    • //h1/text()
  • 获取所有的a标签的href
    • //a/@href
  • 获取html下的head下的title的文本
    • /html/head/title/text()
  • 获取html下的head下的link标签的href
    • /html/head/link/@href

但是当我们需要选择所有的电影名称的时候会特别费力,通过下一小节的学习,就能够解决这个问题

6.2 查找特定的节点

路径表达式 结果
//title[@lang="eng"] 选择lang属性值为eng的所有title元素
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()>1] 选择bookstore下面的book元素,从第二个开始选择
//book/title[text()='Harry Potter'] 选择所有book下的title元素,仅仅选择文本为Harry Potter的title元素
/bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

注意点: 在xpath中,第一个元素的位置是1,最后一个元素的位置是last(),倒数第二个是last()-1

练习:选择所有的电影的名称,href,评分,评价人数

6.3 选取未知节点

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

通配符 描述
* 匹配任何元素节点。
@* 匹配任何属性节点。
node() 匹配任何类型的节点。

实例

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

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。

6.3 选取若干路径

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

实例

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

路径表达式 结果
//book/title | //book/price 选取 book 元素的所有 title 和 price 元素。
//title | //price 选取文档中的所有 title 和 price 元素。
/bookstore/book/title | //price 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。

数据提取之Xpath相关推荐

  1. [Python爬虫] 六、数据提取之XPath与lxml类库

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

  2. 【Python】数据提取xpath和lxml模块(豆瓣电影排行榜的爬虫)

    xpath xpath:一门从html中提取数据的语言 xpath语法 1.选择节点(标签)    /html/head/meta :能够选中html下的head下的所有的meta标签 2.// :能 ...

  3. java爬虫工具xpath提取_爬虫 xpath (数据提取)

    xpath 是数据提取的一种常用的方法 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. 在 XPath 中,有七种类型的节点:元素.属性 ...

  4. 爬虫常用数据提取方式:正则、xpath、beautifulsoup

    文章目录 1.正则re 2.xpath 2.1 定位 2.1.1 xpath中选取节点的路径表达式 2.1.2 xpath谓语,即[ ]中的内容 2.1.3 选取未知节点 2.1.4 选择多个路径 2 ...

  5. Python爬虫学习之数据提取(XPath)

    Python爬虫学习之数据提取XPath 概述 常用规则 运算符及介绍 准备工作 实例 文本获取 属性获取 属性值匹配 属性多值匹配 多属性匹配 按序选择 概述 XPath的全称是XML Path L ...

  6. Python爬虫学习之第七天---数据提取-lxml模块和Xpath使用

    爬虫学习之第七天-数据提取-lxml模块和Xpath使用 知识点:了解 lxml模块和xpath语法的关系了解 lxml模块的使用场景了解 lxml模块的安装了解 谷歌浏览器xpath helper插 ...

  7. python json提取器_【编号0004】爬虫中常用到的数据提取手段

    使用爬虫抓取网上公开的网页数据时,经常需要使用各种技能去解析到手的响应. 本篇文章,重点介绍下,数据提取时,有哪些常见的方法 0. 背景交代 编程语言:Python 提取方式:Python库 1. X ...

  8. python爬虫科研数据提取_python爬虫数据提取四之pyquery

    1 pyquery 简介:同样是一个强大的网页解析工具 它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便 2 pyquery基本用法 2.1 安装 pip insta ...

  9. python网络爬虫系列(六)——数据提取 lxml模块

    一.数据提取-lxml模块 知识点 了解 lxml模块和xpath语法的关系 了解 lxml模块的使用场景 了解 lxml模块的安装 了解 谷歌浏览器xpath helper插件的安装和使用 掌握 x ...

最新文章

  1. mac远程连接centos安装mysql_centos安装Mysql并远程连接
  2. spark java8 scala_在 Ubuntu16.04 中搭建 Spark 单机开发环境 (JDK + Scala + Spark)
  3. 文档过期打不开怎么办_4 个超实用金山文档小技巧,很强大也很简单,赶紧收藏!...
  4. AT1983-[AGC001E]BBQ Hard【dp,组合数学】
  5. atom无法安装插件的解决方法之一
  6. c语言printf * abd bc,C语言练习题_答案版本
  7. 【CF1244C】The Football Season(思维枚举/扩展欧几里德)
  8. 【小程序源码】修复图片音频全新升级带特效神器小游戏微信小程序源码下载-多种游戏支持
  9. 蔻享学术下载器:KouShare-dl
  10. 利用Linux查找重复文件(shell脚本)
  11. Android封装含有通用标题栏的基类BaseActivity
  12. 如何读取csv文件并将其转化为tsv文件
  13. 用keil怎么擦除_keil如何使用?图文教程告诉你keil怎么使用
  14. 脱裤子放屁之用两个栈实现队列、用两个队列实现栈
  15. opnet对服务器的性能分析,一种Web服务器集群的动态反馈算法
  16. 微博平台架构和安全——微博平台首席架构师杨卫华演讲
  17. Seaborn数据可视化
  18. python中对象的多态、封装、继承介绍
  19. 支持python的交易软件_能用python的期货交易软件,期货量化交易软件哪个好
  20. python通过网络发送图片_python 打开网络图片

热门文章

  1. Trac 基本功能介绍
  2. zemax场曲畸变图_Zemax和光学的一些整理
  3. 【RPG Maker MV】RPG游戏《机器人养成记》制作笔记 - 制作背景和引擎选择
  4. 关于python计算生态的命名、哪个选项的描述是正确的_以下选项是 Python 计算生态检索主站的是( )。_成本管理会计答案_学小易找答案...
  5. 人和计算机是组成管理信息系统的要素,管理信息系统MIS复习题.doc
  6. 国际标准时间(前台)和年月日时差为8个小时,如果使用String得到的日期会少八小时
  7. 戴尔: 这一次都用了什么技术突破创新?
  8. 解决Cannot read property ‘onCheckForUpdate’ of undefined问题
  9. 请问这个是什么意思?
  10. 继K1之后浪潮发布M13,这一次瞄向了大型关键业务应用