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 1<br/>
...               <a  href = ‘image2.html‘>Name:  Image 2<br/>
...               <a  href = ‘image3.html‘>Name:  Image 3<br/>
...               <a  href = ‘image4.html‘>Name:  Image 4<br/>
...               <a  href = ‘image5.html‘>Name:  Image 5<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 方法。

原文地址:https://www.cnblogs.com/jcjc/p/10905939.html

时间: 2024-10-10 21:03:00

XPath 和 CSS的相关文章

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

工作中,常常会用到网页元素的定位方式,常用的有xpath和css path两种定位方式. 现在简单介绍如何使用工具自动生成元素的定位字符串. 首先介绍在火狐浏览器上使用FireBug及其扩展FirePath两款工具,它们可以自动生成定位字符串和验证自己编辑的定位字符串能否匹配网页元素. 对着这两款工具截图如下: 使用方法: 打开一个网页,例如www.hao123.com; 鼠标右键点击一个页面元素--使用FireBug查看页面元素,鼠标单击页面左上角的FireBug插件图标或者按下F12键,三种

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

加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链接等.比如在用户名输入框和密码输入框输入正确的用户名和密码,然后点击登录按钮进行登录.在Selenium自动化中,Selenium提供多种API来对HTML元素进行操作,对于每个HTML元素,需要一个可以标识它的标识符,在Selenium中称之为定位器,Selenium支持多种不同类型的定位器,有标

XPath和CSS选择器

[译]XPath和CSS选择器 原文:http://ejohn.org/blog/xpath-css-selectors 最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是:它们俩在某些方面上非常相似,而在另一些方面上又完全不同.不同的地方有,CSS是用来配合HTML工作的,可以使用#id来根据ID获取元素,以及使用.class来根据class获取元素.这些用XPath实现的话都不会那么简洁,反过来呢,XPath可以使用..来返回到DOM树的上层节点中,还可以使用

scrapy中xpath、css用法

一.实验环境 1.Windows7x64_SP1 2.anaconda3 + python3.7.3(anaconda集成,不需单独安装) 3.scrapy1.6.0 二.用法举例 1.开启scrapy shell,在命令行输入如下命令: scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html 结果如下: 2.提取a节点 xpath中用法 result = response.xpath('//a')

Xpath 与Css 定位方式的比较

1. 执行速度Css更快 2. 对于文本的处理xpath更强大使用 String locator_Xpath = "//*[contains(text(),'test')]"; 3. 使用祖先元素属性与当前元素属性组合处理时,CSS不需要严格写出层次结构 <div class="111"> <div> <div> <input class = "222"/> </div> </di

Robotframework中的元素locator[xpath和css]

1:通过ID2:通过Name3:通过xpath   3.1 通过xpath的绝对路径,从最外层开始找       例如/html/body/div[1]/div[4]/div[2]/div/form/span[1]/input   3.2 通过xpath的相对路径       3.2.1 找元素本身       xpath同样可以利用元素自身的属性, 例如 xpath=//*[@id='kw1']       //表示某个层级下,*表示某个标签名,@id=kw1表示这个元素有个id等于kw1  

xpath与CSS定位比较

定位方式 xpath CSS 常规属性 id //*[@id='kw'] #kw class //input[@class='s_ipt'] .s_ipt name //input[@name='wd'] [name='wd'] 其他属性 其他属性 //input[@autocomplete='off'] [autocomplete='off'] 多个属性组合(逻辑运算) //input[@type='text'and @name='wd'] [type='text'][name='wd'] 文

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

对于动漫爱好者来说,海贼王.火影.死神三大动漫神作你肯定肯定不陌生了.小编身边很多的同事仍然深爱着这些经典神作,可见"中毒"至深.利用Python大法带大家分析一下这些神作,看看这些神作到底在讲些神马. 人生苦短,我用Python.利用Python网络爬虫爬取了豆瓣网,将网站上关于这三部动漫的评论全部抓取下来,之后通过Python的第三方库jieba分词进行词频统计和分析,最后通过matplotlib库和wordcloud库将关键词制作成词云进行可视化展示. 词云是神魔?"词

web中的CSS、Xpath等路径定位方法学习

今天不到八点就到公司了,来的比较早,趁着有点时间,总结下web中的CSS.Xpath等路径定位定位的方式吧! 简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代码: 这个是xpath 1 #!/usr/bin/env python 2 # -*- coding: utf_8 -*- 3 4 from learn_webdriver import Webdriver 5 from selenium import webdriver 6 from seleni