数据提取之xpath
学习目标
了解 html和xml的区别
掌握 xpath获取节点属性的方法
掌握 xpath获取文本的方法
掌握 xpath查找特定节点的方法
1 为什么要学习xpath和lxml
lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息
2 什么是xpath
XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。
W3School官方文档:http://www.w3school.com.cn/xpath/index.asp
3 认识xml
知识点:
html和xml的区别
xml中各个元素的的关系和属性
3.1 html和xml的区别
3.2 xml的树结构
Giada De Laurentiis
2005
30.00
J K. Rowling
2005
29.99
Erik T. Ray
2003
39.95
上面的xml内容可以表示为下面的树结构
4 xpath的节点关系
知识点:
认识xpath中的节点
了解xpath中节点之间的关系
4.1 xpath中的节点是什么
每个XML的标签我们都称之为节点,其中最顶层的节点称为根节点
4.2 xpath中节点的关系
5 xpath中节点选择的工具
Chrome插件 XPath Helper
下载地址:https://pan.baidu.com/s/1UM94dcwgus4SgECuoJ-Jcg 密码:337b
Firefox插件 XPath Checker
注意: 这些工具是用来学习xpath语法的,他们都是从elements中匹配数据,elements中的数据和url地址对应的响应不相同,所以在代码中,不建议使用这些工具进行数据的提取
6 xpath语法
知识点
掌握元素路径的相关方法
掌握获取获取属性的方法
掌握获取文本的方法
我们将在下面的例子中使用这个 XML 文档。
6.1 选取节点
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
使用chrome插件选择标签时候,选中时,选中的标签会添加属性class=“xh-highlight”
下面列出了最有用的表达式:
实例
在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:
xpath基础语法练习:
接下来我们听过豆瓣电影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 查找特定的节点
注意点: 在xpath中,第一个元素的位置是1,最后一个元素的位置是last(),倒数第二个是last()-1
xpath基础语法练习2:
从豆瓣电影top250的页面中:选择所有的电影的名称,href,评分,评价人数
6.3 选取未知节点
XPath 通配符可用来选取未知的 XML 元素。
实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
6.3 选取若干路径
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
练习:1.提取速度与激情8 图片链接等信息(https://movie.douban.com/subject/26260853/celebrities)
2.xpath提取腾讯招聘网列表数据和分页链接
7 ### 小结
xpath的概述XPath (XML Path Language),解析查找提取信息的语言
xml是和服务器交互的数据格式和json的作用一致
html是浏览器解析标签数据显示给用户
xpath的节点关系:根节点,子节点,父节点,兄弟节点,子节点,后代节点
xpath的重点语法获取任意节点://
xpath的重点语法根据属性获取节点:标签[@属性 = ‘值’]
xpath的获取节点属性值:@属性值
xpath的获取节点文本值:text()