IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 浅识XPath(熟练掌握XPath的语法)【python爬虫入门进阶】(03) -> 正文阅读

[Python知识库]浅识XPath(熟练掌握XPath的语法)【python爬虫入门进阶】(03)

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦
本文是爬虫专栏的第三篇,重点介绍网页解析神器XPath。
干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。

前言(为什么写这篇文章)

前面两篇文章我们分别介绍了爬虫程序的标准步骤,以及如何熟练的使用Requests库拉取网页数据。这一篇文章就重点介绍解析网页数据利器XPath。由于其比较重要,接下来我会用两篇文章进行介绍。

XPath介绍

XPath(XML Path Language)是一门XML文档中查找信息的语言,XPath可用来在XML(包括HTML)文档中对元素和属性进行查找以及遍历。后面会详细介绍XML和HTML文档的结构组成

XPath开发工具

既然XPath是用来解析网页的数据,就必须要能够通过一定的规则匹配到所需要爬取的数据。这里就要用到XPath的开发工具。

  1. Chrome插件 XPath Helper 密码: 166h
    下载好之后: 设置---> 更多工具--->扩展程序--->加载已解压的扩展程序
    在这里插入图片描述
    在这里插入图片描述

  2. Firefox插件 XPath Checker

XML文档介绍

在正式介绍XPath之前还是让我们来重新认识一个XML文档,XML是一种可扩展的标记语言(Extensible Markup Language)
它主要用来来传输数据,它的标签需要我们自行定义。

HTML文档(网页)

HTML文档也就是我们前面反复提到的网页,它是一种超文本标记语言,主要用来在浏览器上展示数据以及构建页面样式。它本质上跟XML类似,也是通过各种标签包装数据。不过它的标签不是我们自行定义的。

XML和HTML的区别

数据格式描述设计目的
XMLExtensible Markup Language(可扩展标记语言)用于传输数据,重点是数据的内容
HTMLHyperText Markup Language (超文本标记语言)用于显示数据和页面样式
HTML DOMDocument Object Model for HTML (文档对象模型)通过HTML DOM,可以访问所有HTML元素,连同它们所包含的文本和属性,可以对其中的内容进行修改和删除,同时也可以创建新的元素

XML文档示例

<?xml version="1.0" encoding="UTF-8"?>
<responseXML>
	<!--注释-->
	<Detail>
      <CardNo>11111</CardNo>
      <CardPwd lang="en">2222</CardPwd>
    </Detail>
</responseXML>

其中:
<?xml version="1.0" encoding="UTF-8"?> 命名空间节点
<responseXML> 文档节点即根节点
<CardNo>1111</CardNo>是元素节点,元素节点直接包含数据,没有子节点。
lang="en" 表示属性节点。

从上面的示例就可以清晰的看出XML文档就是由一个个节点组成。在XPath中,有七种类型的节点(Node),分别是元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。最外面的节点被称为文档节点或根节点。

HTML的示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML示例</title>
</head>
<body>
<div id="content_views" class="htmledit_views">
    <p style="text-align:center;"><strong>全网ID名:<b>码农飞哥</b></strong></p>
    <p style="text-align:right;"><strong>扫码加入技术交流群!</strong></span></p>
    <p style="text-align:right;"><img src="https://img-blog.csdnimg.cn/5df64755954146a69087352b41640653.png"/></p>
    <div style="text-align:left;"></div>
</div>
</body>
</html>

在这里插入图片描述

一个标准的HTML主要包括Head元素以及Body元素。head元素内主要包括标题<title> 等信息,body 元素内主要就页面的主内容了。用DOM树表示上面的HTML的结构就如下图所示。
在这里插入图片描述

HTML元素的关系

如上图所示,我们可以整理出HTML元素的关系。

父节点(Parent)

除了根节点之外,每个元素都有一个父节点。就像每个孩子都有一个父亲一个意思。

子节点(Children)

一个元素可以有零个,一个或者多个子节点,就像每个父亲都可能有零个,一个或者多个孩子

同胞(Sibling)

拥有相同的父节点的元素,就是拥有相同父亲的兄弟

先辈(Ancestor)

某个节点的父节点的父节点,就是祖父级别,就是爷爷辈

后代(Descendant)

某个节点的子,子的子,等等,就是孙子辈

选取节点

XPath使用路径表达式在XML文档(HTML文档)中选取节点,节点通过沿着路径或者跳跃(step)选取。下面就罗列比较常用的路径表达式。下面的示例还是以前面提到的HTML为例。这里将代码放在了一个XPath.html文件中。然后访问该文件。
在这里插入图片描述

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.选取当前节点
选取当前节点的父节点
@选取属性

实例

  1. /html 获取根节点下的 html 节点
    在这里插入图片描述
  2. //div 匹配所有的div标签以及其子节点,而不管它们在文档中的位置。
    在这里插入图片描述
  3. //div/p/strong/. 匹配strong 当前这个元素
    在这里插入图片描述
  4. //div/p/strong/.. 匹配div元素下的p元素的strong元素的父节点
    在这里插入图片描述
  5. //div/@class 匹配div节点下名为class属性。
    在这里插入图片描述

谓语

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

路径表达式结果
//div/p[1]选取属于div子元素的第一个p元素
//div/p[last()]选取属于div子元素的最后一个p元素
//div/p[last()-1]选取属于div子元素的倒数第二个p元素
//div/p[position()??]选取最前面的两个属于div元素的子元素的p元素
//b[@class]选取拥有class属性的b元素
//p[@style=“text-align:right;”]选取包含属性style="text-align:right;"的p元素

通配符

XPath 通配符可用来获取未知的XML元素(包括HTML元素)

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

举例

  1. //p/strong/* 选取属于p元素的子元素strong元素的所有子元素。不包括strong元素本身。
    在这里插入图片描述
  2. //p/@* 选取属于p元素的所有属性。
    在这里插入图片描述

选取若干路径

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

路径表达式结果
//div/p|//div/div选取div元素的所有p和div元素
//p | //strong选取文档中所有的p元素和strong元素

在这里插入图片描述

XPath的运算符

下面列出了可用在 XPath 表达式中的运算符:

运算符描述实例结果
|计算两个节点集//p//strong
+加法6+410
-减法5-23
*乘法10*10100
div除法8 div 42
=等于style=“text-align:right;”匹配属性等于text-align:right;的style属性
<小于
< =小于等于
>大于
> =大于等于
or
and
mod计算除法的余数5 mod 21

总结

本文详细介绍了XPath的语法内容,学会语法内容就能快速的写出我们需要抓取的数据的表达式。

粉丝专属福利

软考资料:实用软考资料

面试题:5G 的Java高频面试题

学习资料:50G的各类学习资料

脱单秘籍:回复【脱单】

并发编程:回复【并发编程】

											👇🏻 验证码 可通过搜索下方 公众号 获取👇🏻 

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-01 11:34:36  更:2021-11-01 11:34:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:47:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码