
点击上方 蓝字关注我们


大家好,我是斌斌。 本公众号专注于分享RPA+AI内容,愿景带领2000+人掌握RPA,实现十倍速效率提升,提高自媒体创作效率,解放重复劳动。感谢您的阅读,关注我,即可领取RPA基础手册。

上一篇,我们对XPath进行了一个简单的了解
这篇文章开始,我们正式进入XPath的学习,Let's GO!


一、什么是XPath?



1.定义与作用

XPath 是一种用来在像 XML 和 HTML 这样的文档中查找信息的语言。它就像一个地址或导航系统,可以帮助你准确地找到你想要的元素,就像在一个城市地图中找到具体的街道地址,或者在一棵树上找到一片特定的叶子。
HTML (超文本标记语言): 你每天浏览的网页都是由 HTML 写成的。它定义了网页的结构和内容,例如标题、段落、图片等等。我们可以把它看作是网页的“骨架”和“外貌”。
XML (可扩展标记语言): XML 是一种用于存储和传输数据的语言。它不像 HTML 那样关注网页的显示效果,而是更注重数据的组织和含义。你可以把它理解成一种通用的数据格式。
XPath 与 HTML/XML 的关系: HTML 和 XML 文档都是以一种树形结构组织起来的。XPath 就像一个导航系统,它可以帮助你在这棵“树”上找到你想要的特定信息。 在爬虫领域,XPath 经常被用来从网页 (HTML) 中提取数据。

2.为什么学习XPath

学会XPath,就等于给你的RPA技能加了个翅膀。它不仅让你的自动化流程更加精准,还能应对各种复杂的网页结构。没有XPath,很多自动化任务就难以实现,效率自然也打折扣。所以,掌握XPath,RPA之路更加顺畅,工作起来也更得心应手。
有了简单的概念后,接下来,我们了解一下XPath的一些基础语法

二、XPath的基本语法



1.XPath 表达式的基本结构

XPath表达式就像是一串指令,告诉机器人该去哪里找东西。它的基本结构是这样的:/根节点/父节点/子节点
比如,/html/body/div这个表达式就是告诉机器人,从网页的根节点(html)开始,找到body节点,再找到body下面的div节点。

2.节点类型

在XPath的世界里,网页上的每一个东西都是一个节点。最常见的有三种节点:元素节点、属性节点和文本节点。
元素节点就是网页上的各种html标签,比如 、、 属性节点是元素的属性,比如 文本节点则是元素里面的文字内容。 通过XPath,你可以轻松找到这些节点,并进行操作。
3. 基本符号和操作 /和//的区别 /和//是XPath里的两个好兄弟,作用可不一样。/就像是直线前进,表示从根节点开始,一步一步往下找;而//更像是“放大镜”,不管中间有多少层,都能直接找到符合条件的节点。比如,你用/html/body/div,就是一步一步找;用//div,不管div在什么层级,都能抓到。 像上篇文章中,我们用的//div[@id='msh-chateditor'] .和..的含义 .和..在XPath里有点“导航”作用。.代表当前节点,就像你站在某个位置,看看周围;..则是往回走一步,回到上一级节点。这样一来,定位元素的时候更灵活,不用总是从头开始找。 . (点) 表示当前节点:XPath 表达式中的点 .. (两个点) 表示父节点: 两个点 This is a paragraph. 如果当前节点是 @符号用于属性选择 @ 符号是 XPath 中用于选择属性的关键符号。它放在属性名称的前面。它就像是筛子,可以帮你从节点的各种属性中筛选出你需要的那个。这样,RPA机器人就能精准找到带有特定属性的元素,省时省力。 例如: 最后,让我们以一个小例子结束本篇的内容。 我们使用Xpath获取百度首页的输入框和百度一下按钮,这个操作流程上一篇文章讲过了,不会的话,返回去看一下 //input[@id="kw"] //input[@id="su"] 怎么样,是不是感觉XPath的基础知识不再那么枯燥了?接下来的内容,我们会继续深入,带你一步步掌握更多有趣的技巧,让RPA之路更加轻松愉快! 欢迎关注、点赞、转发给我鼓励~ ??关注我??陪你一起阅见更好的自己 往期推荐 影刀RPA | 推送通知消息到飞书群 ,老奶奶都看的懂的保姆级教程 影刀RPA 小tips | 影刀虚拟桌面运行,你必须掌握的技巧 影刀RPA自动化小白教程-小红书自动发布机器人(一),手把手小白教程,老奶奶都能学会 影刀RPA自动化小白教程-小红书自动发布机器人(二),手把手小白教程,老奶奶都能学会 点个在看你最好看;
id、class;

. 表示你当前所处的位置,也就是上下文节点。例如,如果你用 XPath./text(),意思就是获取当前节点下的文本内容。.. 表示当前节点的上一级,也就是父节点。例如,如果你用 XPath../@class,意思就是获取当前节点的父节点的 class 属性值。 元素:
./@id 会返回 "my-paragraph" (当前节点的 id)。../@class 会返回 "container" (父节点的 class)。../* 会返回 元素自身 (父节点的所有子元素)。
@id: 选择 id 属性。@name: 选择 name 属性。@src: 选择 src 属性 (常用于图片)。@href: 选择 href 属性 (常用于链接)。@class: 选择 class 属性。



