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 ...
随机推荐
- pycharm新建Django时,遇到的坑,安装index包失败
https://blog.csdn.net/li93675/article/details/89418097 如果在pycharm中导入django包 ,只对当前项目有效,建议使用命令pip inst ...
- C语言知识点记录
1,栈底指针不变,栈顶指针变化. 2,结构化程序包括:顺序,分支,循环. 3,详细设计的任务是为软件结构图的每一个模块确定实现算法和局部数据结构. 4,数据操纵语言:负责数据的操纵,包括查询及增,删, ...
- [数据库] MariaDB安装及使用
一.安装MariaDB 1.使用官方源安装marisdb 如果使用阿里云的源,目前的版本号为5.5.64.如果想安装最新的10.x版本,则需要使用MariaDB的官方源. 1)配置官方源: 在/etc ...
- 红黑树java代码实现
红黑树 思想源于:https://www.cnblogs.com/nananana/p/10434549.html有解释有图,很清晰(删除时需考虑根节点和兄弟节点的子节点是否存在) package t ...
- Spring Security教程之session管理
1.1 检测session超时 1.2 concurrency-control 1.3 session 固定攻击保护 Spring Security通过http元素下的子元素s ...
- @ModelAttribute与@RequestBody的区别
一.@ModelAttribute与@RequestBody的区别 @ModelAttribute与@RequestBody都是用来注解解析前端发来数据,并自动对应到所定义的字段名称. 这里先放结论, ...
- Linux 笔记:目录
目录 Linux的文件系统目录树庞大而复杂.如果你非常熟悉它的话,会极大地提高你应用Linux的技巧. 简单地说,典型的Linux包含五大文件系统目录. 根据你自己系统的需要和大小,这些文件系统目录能 ...
- Intellij IDEA中创建Package变成一级目录
1.创建包,但是出来的却是一级目录 2.因为Compact Middle Packages默认勾选上了,取消掉即可
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 字符串函数
这些函数在字符数组类(numpy.char)中定义. add() 对两个数组的逐个字符串元素进行连接 multiply() 返回按元素多重连接后的字符串 center() 居中字符串 capitali ...
- JS打开浏览器新窗口
window.open(URL,name,features,replace); 参数 描述 URL 一个可选的字符串,声明了要在新窗口中显示的文档的 URL.如果省略了这个参数,或者它的值是空字符串, ...