xpath简介

  1,使用路径表达式在xml和html中解析
    2,包含标准函数路(所有库支持的xpath语法一致)
      3,W3C标准

节点:

 <body>                        第一个节点: <html>
<a> <head> 与 <body>;<a> 与<div>;<h1>与<h2> 为同胞节点
<div> <h1> 是</span> 的父节点,同理<span> 是<h1> 的子节点
<h1> 因为<span> 是<h1> 的子节点,<h1>是<div>的子节点,所以<div>是<span>
<span> 的先辈节点,同理,<span>是<div>的子孙节点
</span>
</h1>
<h2>
</h2>
</div>
</a>
</body>

基本语法:

  举例元素标签为artical标签

  一:

  artical 选取所有artical元素的子节点

/artical 选取根元素artical
        artical/a 选取所有属于artical的子元素a元素
        //div    选取所有div 子元素,无论div在任何地方
        artical//div  选取所有属于artical的div 元素,无论div元素在artical的任何位置
        //@class 选取所有名为class 的属性的
    二:谓语    
        /artical/div[1]   选取所有属于artical 子元素的第一个div元素
        /artical/div[last()]  选取所有属于artical子元素的最后一个元素
        /artical/div[last()-1] 选取所有属于artical子元素的倒数低2个元素
        //div[@lang]   选取所有拥有属性为lang的元素
        //div[@lang="eng"] 选取所有div下lang属性为eng的元素

三:
        /div/* 选取所有属于div元素的所有子节点
        //*    选取所有元素
        //div[@*]   选取所有带属性的title元素
        //div/a|//div/p   选取所有div元素的a和p 元素
        //span | //ul   选取文档中所有span和ul 的元素
        artical/div/pl|//span  选取所有div下的pl和文档中所有span
注意事项:
    1) 按照审查元素的写法不一定正确,要按照网页源码的才行
        因为不一样,网页源码才是你看到的
    2) 浏览器有自带的复制xpath功能,审查元素你试试,不同浏览器不同方法
    3) xpath有c的速度,所以按照[@class=""]准确性较高

Scrapy基础(三) ------xpath基础的更多相关文章

  1. linux基础三---网络基础&软件包管理

    一 ifconfig:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址. ifconfig eno16777736 down/up   关闭/开启 eno16777736 网卡 ifconf ...

  2. C++学习基础三——迭代器基础

    迭代器分为两种:一种是iterator,另一种是const_iterator.两者都可进行访问容器中的元素,不同之处是:(1)const_iterator类型只能用于读取容器内的元素,不能更改其值:而 ...

  3. 爬虫开发7.scrapy框架简介和基础应用

    scrapy框架简介和基础应用阅读量: 1432 scrapy 今日概要 scrapy框架介绍 环境安装 基础使用 今日详情 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数 ...

  4. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

  5. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

  6. Bootstrap <基础三十一>插件概览

    在前面布局组件中所讨论到的组件仅仅是个开始.Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以给站点添加更多的互动.即使不是一名高级的 JavaScript 开发人员,也可以着手 ...

  7. Bootstrap <基础三十>Well

    Well 是一种会引起内容凹陷显示或插图效果的容器 <div>.为了创建 Well,只需要简单地把内容放在带有 class .well 的 <div> 中即可.下面的实例演示了 ...

  8. Bootstrap<基础三> 排版

    Bootstrap 使用 Helvetica Neue. Helvetica. Arial 和 sans-serif 作为其默认的字体栈. 使用 Bootstrap 的排版特性,您可以创建标题.段落. ...

  9. jdbc基础 (三) 大文本、二进制数据处理

    LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...

随机推荐

  1. Fiddler抓包6-get请求(url详解)

    前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一. ...

  2. JS实现继承的几种方式(转)

    转自:幻天芒的博客 前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如 ...

  3. JAVA中的Token

    JAVA中的Token 基于Token的身份验证 来源:转载 最近在做项目开始,涉及到服务器与安卓之间的接口开发,在此开发过程中发现了安卓与一般浏览器不同,安卓在每次发送请求的时候并不会带上上一次请求 ...

  4. shell 批量替换内容

    一.查找/data/www/vhosts/WOStest2_YiiFramework/console/sh/下所有.sh文件 把/data/www/vhosts/WOS_YiiFramework 替换 ...

  5. js 打开摄像头方法 (定制摄像头)

    var video = document.getElementById("video");if (navigator.mediaDevices && navigat ...

  6. web和servlet一样的用法但是有区别

  7. jdbc问题:Access denied for user ''@'localhost''是因为没输入账户和密码

    Access denied for user ''@'localhost' to database 'bjpowernode'

  8. HDU 1541 STAR(树状数组)

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. CentOS6.9安装HDFS

    1.安装依赖包 yum install -y gcc openssh-clients 2.升级glib2.14 升级glibc-2.14用到的rpm 下载地址:https://pan.baidu.co ...

  10. [转] 简述js中 for in 与 for of 区别

    for in是ES5标准,遍历key. for of是ES6标准,遍历value. for (var key in arr){ console.log(arr[key]); } for (var va ...