XPath 和 CSS
1、XPath
XPath 即 XML 路径语言 (XML Path Language),他是一种用来确定 xml 文档中某部分位置的语言。
xml文档(html 属于 xml)是由一系列节点构成的树,例如:
<html>
<body>
<div>
<p>Hello world</p>
<a href = '/home'>Click here</a>
</div>
</body>
</html>
xml 文档的节点有多种类型,其中最常用的有一下几种:
(1)根节点 整个文档树的根
(2)元素节点 html、body、div、p、a
(3)属性节点 href
(4)文本节点 Hello world、Click here
节点间的关系有以下几种:
(1)父子 body 是 html 的子节点,p 和 a 是div的子节点,反过来,div是p和a的父节点
(2)兄弟 p 和 a 是兄弟节点
(3)祖先、后裔 body、div、p、a 都是html的后裔节点,反过来 html 是body、div、p、a的祖先节点
2、基础语法
XPath 常用的基本语法
| 表达式 | 描述 |
| / | 选中文档的根(root) |
| . | 选中当前节点 |
| .. | 选中当前节点的父节点 |
| ELEMENT | 选中子节点中所有 ELEMENT 元素节点 |
| //ELEMENT | 选中父点节点中所有 ELEMENT 元素节点 |
| * | 选中所有元素子节点 |
| text() | 选中所有文本子节点 |
| @ATTR | 选中所有 ATTR 的属性节点 |
| @* | 选中所有属性节点 |
| [谓语] | 谓语是用来查找某个特定节点或者包含某个特定值的节点 |
接下来,我们通过一些例子展示 XPath 的使用
>>> from scrapy.selector import Selector
>>> from scrapy.http import HtmlResponse
>>> body = '''
...<html>
... <head>
... <base href='http://example.com'/>
... <title>Example website</title>
... </head>
... <body>
... <div id = 'images'>
... <a href = 'image1.html'>Name: Image <br/>
... <a href = 'image2.html'>Name: Image <br/>
... <a href = 'image3.html'>Name: Image <br/>
... <a href = 'image4.html'>Name: Image <br/>
... <a href = 'image5.html'>Name: Image <br/>
... </div>
... </body>
... </html>
>>> response = HtmlResponse(url = 'http://www.example.com')
3、常用函数
XPath 还提供了许多函数,如数字、字符串、时间、日期、统计等。
下面介绍两种十分常用的字符串函数
(1)string(arg):返回传参数字符串值
(2)contains(str1, str2):判断 str1 中是否包含 str2,返回布尔值
4、CSS
CSS 即层叠样式表,其选择器是一种用来确定 HTML 文档中某部分位置的语言
CSS 选择器的语法比 XPath 更简单一些,但功能不如 XPath 强大,实际上,当我们电泳 Selector 对象的 CSS 方法时,在其内部会使用 Python库 cssselect 将CSS 选择器表达式翻译成 XPath 表达式,然后电泳 Selector 对象的 XPath 方法。
XPath 和 CSS的更多相关文章
- 黄聪:HtmlAgilityPack中SelectSingleNode的XPath和CSS选择器
XPath和CSS选择器 原文:http://ejohn.org/blog/xpath-css-selectors 最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是: ...
- Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景 在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...
- UI自动化之元素定位(xpath、css)
很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...
- 验证Xpath和CSS 路径是否有效
XPath定位和CSS定位在Selenium中是经常使用的. 在FireFox浏览器和Chrome浏览器,可以使用这样的方法来验证定位是否准确. 以Chrome浏览器做范例 按键盘的F12 进入开发者 ...
- selenium学习笔记(xpath和css定位)
简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代码: 这个是xpath #!/usr/bin/env python # -*- coding: utf_8 - ...
- 谷歌浏览器使用SelectorGadget和Xpath Helper获取xpath和css path
在上篇文章里,介绍了如何在火狐浏览器中获取网页元素的xpath和css path. 这篇文章将介绍,在谷歌浏览器中使用SelectorGadget和Xpath Helper实现同样功能. 这两个谷歌浏 ...
- 火狐浏览器使用firebug获取xpath和css path
工作中,常常会用到网页元素的定位方式,常用的有xpath和css path两种定位方式. 现在简单介绍如何使用工具自动生成元素的定位字符串. 首先介绍在火狐浏览器上使用FireBug及其扩展FireP ...
- 【WEB自动化】【第一节】【Xpath和CSS元素定位】
目前自动化测试开始投入WEB测试,使用RF及其selenium库,模拟对WEB页面进行操作,此过程中首先面对的问题就是对WEB页面元素的定位,几乎所有的关键字都需要传入特定的WEB页面元素,因此掌握常 ...
- 正则表达式(特殊字符)/Xpath语法/CSS选择器
正则表达式(特殊字符) ^ 开头 '^b.*'----以b开头的任意字符 $ 结尾 '^b.*3$'----以b开头,3结尾的任意字符 * 任意长度(次数),≥0 ? 非贪婪模式,非贪婪模式尽可能少的 ...
- QTP11使用DOM XPath以及CSS识别元素对象
我们知道,像DOM,Html,CSS,XPath等对对象的识别策略广泛运用于一些开源的工具,例如:Selenium,Watir,Watir-Webdriver,以前qtp版本是不支持这些东西的,现在q ...
随机推荐
- 【Struts APP_PATH】StartSystemListener
StartSystemListener package k.filter; import javax.servlet.ServletContext; import javax.servlet.Serv ...
- excel截取第一个空格前的字符
excel 替换 空格字符后面的所有字符 =TRIM(REPLACE(A1,FIND(" ",A1),999,)) =TRIM(REPLACE(A1,1,FIND(" & ...
- IE浏览器清浮动
.cfx:after,.cfx:before{content:" ";display:table;}.cfx:after{clear:both;}.cfx{*zoom:1;} 今天 ...
- Centos7下载和安装教程
https://blog.csdn.net/qq_42570879/article/details/82853708 阿里下载64bit镜像:http://mirrors.aliyun.com/cen ...
- go语言快速入门教程
go快速入门指南 by 小强,2019-06-13 go语言是目前非常火热的语言,广泛应用于服务器端,云计算,kubernetes容器编排等领域.它是一种开源的编译型程序设计语言,支持并发.垃圾回收机 ...
- DataGrid 獲取 制定 row Col 單元格
public static class DataGridHelper { /// <summary> /// Gets the v ...
- 5种JVM调优配置方法概览!!!
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
- C语言笔记 11_头文件&强制类型转换&错误处理&递归
头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处理指 ...
- Python数据分析之Pandas操作大全
从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...
- 如果你是新晋的leader, 你可能需要了解这些。
背景 在职业发展的道路上,我们总会面临这样的抉择: 是在技术的路上一条路走到黑,做技术专家 接触管理, 走上管理 年龄大了,搬砖没人要,转型 or 去公司楼下卖炒粉 我曾经有个小小的愿望: 在毕业5年 ...