关于在自动化中Xpath表达式的书写,其实我也只是刚刚入门,粗略的跟着网上的教程学了一下,这篇我就来分享总结一下我学习到的知识。

首先呢,我们先认识一下什么是Xpath。Xpath是XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。因为Xpath基于XML的树状结构,提供了在数据结构树种寻找节点的能力,所以Xpath被开发者们当做一种小型的查询语言。

关于如何在网页中获取元素的Xpath表达式,我在上一篇文章中就已经介绍过了,在这篇中就不重复叙说了。当然,我在上篇文章上也说了,这种通过工具获取的Xpath表达式,是死板的,不精确的,很容易找不到元素。在实际的项目中,Xpath的表达式可能会是很长的一句,或者关键信息会有相同的存在,所以我们不能够快速准确的获取好唯一的节点信息。这就需要用一些其他的表达方法来帮助我们了。这也是我写这篇文章的用意。介绍几种比较实用的Xpath定位方法。

text()方法:这个方法我们用百度首页上的“新闻”按钮来举例。首先看网页源代码如下

我们可以看得出来在和“新闻”同类型的元素很多,他们的className是相同的,如果这时候源码中对方没有标出不同的name属性,那我对于我们获取新闻这个元素就很难了。这时候我们的text()方法就可以派上用场了。表达式:.//*[@id='u1']/a[text()='新闻']。也就是说,当我们要定位的元素是文本类型,且附近同类型元素太多时,我们就可以用text()方法来快速定位到我们需要的文本元素。

这里我在个人推荐一下,面对这样一个唯一标签下面,一排同类型标签的时候,我们还有一种简单的Xpath表达式来定位元素。例如,我们想要定位的“新闻”元素,它排在这群文本的第一位,表达式可以写成:.//*[@id='u1']/a[1]。代表我要定位id为“u1”标签下所有已“a”标签起头的元素中的第一个元素。

在我目前的自动化学习过程中,我用到方法就是以上者三种方法,当然肯定还有更多其他好用的方法,不过对于我来说,目前这三种已经够用了。所以我也就简略的介绍了一下这三种方法。

Xpath表达式的粗介绍的更多相关文章

  1. 网络爬虫之Selenium模块和Xpath表达式+Lxml解析库的使用

    实际生产环境下,我们一般使用lxml的xpath来解析出我们想要的数据,本篇博客将重点整理Selenium和Xpath表达式,关于CSS选择器,将另外再整理一篇! 一.介绍: selenium最初是一 ...

  2. 【XML】XPath表达式

    XPath简介 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起 ...

  3. EL表达式的简单介绍

    EL表达式的简单介绍 一.JSP EL语言定义 E L(ExpressionLanguage)  目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于ECMAScript 和 XPath 表达式 ...

  4. 第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式

    第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式 我们自定义一个main.py来作为启动文件 main.py #!/usr/bin/en ...

  5. 第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础

    第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础 在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块 ...

  6. urllib下使用Xpath表达式示例

    urllib下使用Xpath表达式示例 使用xpath表达式需要先将需要匹配的数据转换成tree格式,这就需要先装lxml模块.安装方法可以使用pip安装. 示例代码: import urllib.r ...

  7. 十八 Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式

    我们自定义一个main.py来作为启动文件 main.py #!/usr/bin/env python # -*- coding:utf8 -*- from scrapy.cmdline import ...

  8. 十五 web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础

    在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块,然后将网页数据通过lxml下的etree转化为treedata的形式 urllib库中使用xpath表 ...

  9. selenium用css、xpath表达式进行元素定位

    绝对路径选择 从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径 Xpath : /html/body/div CSS : html>body&g ...

随机推荐

  1. Java学习day6数组

    ---恢复内容开始--- Java数组 Java 语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number ...

  2. BZOJ 1179 (Tarjan缩点+DP)

    题面 传送门 分析 由于一个点可以经过多次,显然每个环都会被走一遍. 考虑缩点,将每个强连通分量缩成一个点,点权为联通分量上的所有点之和 缩点后的图是一个有向无环图(DAG) 可拓扑排序,按照拓扑序进 ...

  3. 使用pdfobject.js实现在线浏览PDF

    1.pdfobject.js官网:https://pdfobject.com/ 2.在html文件中引入这个文件,以pdfobject.min.js为例 <script type="t ...

  4. SCUT - 11 - 被钦定的选手 - 质因数分解

    https://scut.online/p/11 T了好多次,还想用mutimap暴力分解每个数的质因数.后来记录每个数的最小质因子过了. #include <bits/stdc++.h> ...

  5. 除了a链接跳转,还有其他的跳转方式

    一.直接在要跳转部分加上onclick事件 1.加入onclick事件: <div onclick="window.open('http://baidu.com','_blank')& ...

  6. spark复习笔记(4):spark脚本分析

    1.[start-all.sh] #!/usr/bin/env bash # # Licensed to the Apache Software Foundation (ASF) under one ...

  7. 奇葩问题:Invalid bound statement (not found): cn.zss.zsdemo.mapper.RoleMapper.selectByPrimaryKey

    使用mybatis,遇到Invalid bound statement (not found): cn.zss.zsdemo.mapper.RoleMapper.selectByPrimaryKey ...

  8. JavaScript基础8——弹窗案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 自己实现一个Redux

    Redux是一个可预测的状态容器,提供可预测的状态管理. 什么是状态?状态其实也就是数据,管理状态也就是对数据的管理.那么什么是可预测的状态管理呢?能够监听数据的变化,获取变化的来源,在发生变化时可以 ...

  10. ][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别

    转自https://blog.csdn.net/szwangdf/article/details/26714603 MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使 ...