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的更多相关文章

  1. 黄聪:HtmlAgilityPack中SelectSingleNode的XPath和CSS选择器

    XPath和CSS选择器 原文:http://ejohn.org/blog/xpath-css-selectors 最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是: ...

  2. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  3. UI自动化之元素定位(xpath、css)

    很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...

  4. 验证Xpath和CSS 路径是否有效

    XPath定位和CSS定位在Selenium中是经常使用的. 在FireFox浏览器和Chrome浏览器,可以使用这样的方法来验证定位是否准确. 以Chrome浏览器做范例 按键盘的F12 进入开发者 ...

  5. selenium学习笔记(xpath和css定位)

    简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代码: 这个是xpath #!/usr/bin/env python # -*- coding: utf_8 - ...

  6. 谷歌浏览器使用SelectorGadget和Xpath Helper获取xpath和css path

    在上篇文章里,介绍了如何在火狐浏览器中获取网页元素的xpath和css path. 这篇文章将介绍,在谷歌浏览器中使用SelectorGadget和Xpath Helper实现同样功能. 这两个谷歌浏 ...

  7. 火狐浏览器使用firebug获取xpath和css path

    工作中,常常会用到网页元素的定位方式,常用的有xpath和css path两种定位方式. 现在简单介绍如何使用工具自动生成元素的定位字符串. 首先介绍在火狐浏览器上使用FireBug及其扩展FireP ...

  8. 【WEB自动化】【第一节】【Xpath和CSS元素定位】

    目前自动化测试开始投入WEB测试,使用RF及其selenium库,模拟对WEB页面进行操作,此过程中首先面对的问题就是对WEB页面元素的定位,几乎所有的关键字都需要传入特定的WEB页面元素,因此掌握常 ...

  9. 正则表达式(特殊字符)/Xpath语法/CSS选择器

    正则表达式(特殊字符) ^ 开头 '^b.*'----以b开头的任意字符 $ 结尾 '^b.*3$'----以b开头,3结尾的任意字符 * 任意长度(次数),≥0 ? 非贪婪模式,非贪婪模式尽可能少的 ...

  10. QTP11使用DOM XPath以及CSS识别元素对象

    我们知道,像DOM,Html,CSS,XPath等对对象的识别策略广泛运用于一些开源的工具,例如:Selenium,Watir,Watir-Webdriver,以前qtp版本是不支持这些东西的,现在q ...

随机推荐

  1. Laravel Vuejs 实战:开发知乎 (7)验证问题表单字段

    上一节代码中已经实现 下面代码中的validate内部配置就是: public function store(Request $request) { // $data = $request->v ...

  2. c++高斯消元法求解线性方程组

    #include<iostream> #include<math.h> #include<string.h> using namespace std; #defin ...

  3. JS中的 '+' 号

    当用作单目操作符的时候,+操作符不会对Number类型产生影响.但如果应用在字符串类型上,会将其转换为数字: var a = 25;a =+ a; //对a值没有影响console.log(a); / ...

  4. 为什么局部内部类和匿名内部类只能访问 final 的局部变量?

    首先,我们看一个局部内部类的例子: class OutClass { private int age = 12; public void outPrint(final int x) { class I ...

  5. Spark Streaming实践和优化

    发表于:<程序员>杂志2016年2月刊.链接:http://geek.csdn.net/news/detail/54500 作者:徐鑫,董西成 在流式计算领域,Spark Streamin ...

  6. 初学做uniapp项目过程梳理的一些记录

    1.uniapp不显示h5头部 第一种写法: { "path" : "pages/yunshi/yunshi", "style" : { & ...

  7. put、patch与post区别

    idempotent 幂等的 如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的:  idempotent的意思是如果相同的操作再執行第二遍第三遍,結果還是一樣. POST方法 ...

  8. Kubernetes的pod控制器之DaemonSet

    DaemonSet 顶级参数介绍 [root@master manifests]# kubectl explain ds KIND: DaemonSet VERSION: extensions/v1b ...

  9. 吴裕雄--天生自然Numpy库学习笔记:NumPy IO

    Numpy 可以读写磁盘上的文本数据或二进制数据. NumPy 为 ndarray 对象引入了一个简单的文件格式:npy. npy 文件用于存储重建 ndarray 所需的数据.图形.dtype 和其 ...

  10. Robot Framework 使用【2】-- MAC系统搭建Robot Framework

    前言 上一篇中讲述了如何在windows环境下搭建Robot Framework,发完帖后有几位小伙伴就私下留言有没有MAC版本的搭建过程,由于笔者MAC上是安装了旧版本的,经过笔者本周零碎时间的尝试 ...