HTML的三大概念:标签、元素以及属性

标签:尖括号中的文本       例:<head>……</head> 标签通常成对出现

元素:标签中的所有内容        元素中可包含元素

属性:标签的特殊标注等     例:<a href="http:\\www.baidu.com">……</a>  其中,href部分称为属性

使用XPath选择HTML元素

使用‘/’+标签名定位

例: /html/body        将定位到body部分

当某便签下出现多个同标签元素时,使用类似数组的方式定位到最准确的位置

切记:此处下标从1开始,而不是编程中常见的从0开始

例:/html/body/div/p[1]         返回相应位置的第一个p元素

/html/body/div/p             返回相应位置的所有p元素

对于大型文档,精确定位往往需要一个非常大的XPath表达式,为避免这种问题,我们可以使用‘//’语法

例://p         将会选择HTML中所有的p元素

  //a         将会选择HTML中所有的链接

同时,//语法可用于层次结构中

例://div//a       得到div元素下所有链接

  //div/a        得到div元素直接下级的所有链接

注意:元素下与元素直接下级的区别

此外,可通过符号@来直接定位标签属性

例://a/@href          得到所有链接中的href属性

使用text()函数,只选取文本

例://a/text()           得到所有链接中的文本信息

使用符号*选择指定层级的所有元素

//*[@itemprop="name"]           得到包含itemprop="name"的所有元素

选择包含某个特定属性或特定属性值的标签时使用如下结构

例://a[@href]      得到包含href属性的所有链接

  //a[@href="http://www.baidu.com"]      得到href值为“http://www.baidu.com”的所有链接

此外,还可以使用以特定子字符起始或包含的能力

例://a[starts-with(@href, "http://")]           得到href属性以http://为起始的所有链接

  //a[contains(@href, "baidu")]              得到href属性包含baidu的所有链接

  //a[not (contains(@href, "baidu"))]     得到所有href属性不包含baidu的链接

更多类似函数,参照http://www.w3schools.com/xsl/xsl_functions.asp

在使用XPath时,应尽量

  避免使用数组索引;

  避免使用与数据关系不密切的类名;

  使用面向数据的类名;

  ID通常都比较可靠(例外情况:以编程方式生成的包含唯一标记的ID     如“order-F5568”;此外,还需注意部分HTML中ID不唯一的情况)

python应用:爬虫框架Scrapy系统学习第一篇——xpath详解的更多相关文章

  1. python应用:爬虫框架Scrapy系统学习第二篇——windows下安装scrapy

    windows下安装scrapy 依次执行下列操作: pip install wheel pip install lxml pip install PyOpenssl 安装Microsoft visu ...

  2. python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说

    使用cmd创建一个scrapy项目: scrapy startproject project_name (project_name 必须以字母开头,只能包含字母.数字以及下划线<undersco ...

  3. python应用:爬虫框架Scrapy系统学习第三篇——初识scrapy

    scrapy的最通用的爬虫流程:UR2IM U:URL R2:Request 以及 Response I:Item M:More URL 在scrapy shell中打开服务器一个网页 cmd中执行: ...

  4. 《精通Python爬虫框架Scrapy》学习资料

    <精通Python爬虫框架Scrapy>学习资料 百度网盘:https://pan.baidu.com/s/1ACOYulLLpp9J7Q7src2rVA

  5. 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...

  6. python 网络爬虫框架scrapy使用说明

    1 创建项目scrapy startproject tutorial 2 定义Itemimport scrapyclass DmozItem(scrapy.Item):    title = scra ...

  7. python网络爬虫(7)爬取静态数据详解

    目的 爬取http://seputu.com/数据并存储csv文件 导入库 lxml用于解析解析网页HTML等源码,提取数据.一些参考:https://www.cnblogs.com/zhangxin ...

  8. 系统学习前端之FormData详解

    FormData 1. 概述 FormData类型其实是在XMLHttpRequest 2级定义的,它是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利. 2. 构造函数 创建一 ...

  9. Flask第一篇——URL详解

    原创 2018-02-14 孟船长 自动化测试实战 URL是Uniform Resource Locator的缩写,即统一资源定位符. 一个URL通常由一下几个部分组成: scheme://host: ...

随机推荐

  1. PowerShell管理Azure

    PowerShell第一次连接Azure1.下载Azure SDK,安装azure powershell http://azure.microsoft.com/zh-cn/downloads/?rnd ...

  2. 二叉树的二叉链表存储结构及C++实现

    前言:存储二叉树的关键是如何表示结点之间的逻辑关系,也就是双亲和孩子之间的关系.在具体应用中,可能要求从任一结点能直接访问到它的孩子. 一.二叉链表 二叉树一般多采用二叉链表(binary linke ...

  3. Toad for MySQL 7.3 Freeware异常 2017-01-09 15:14 115人阅读 评论(0) 收藏

    打开Toad出现如下异常信息: 解决办法: 重装.NET Framework4.0

  4. Bootstrap Multiselect

    Getting Started Link the Required Files First, the jQuery library needs to be included. Then Twitter ...

  5. eclipse去掉xml验证的方法

    eclipse Multiple annotations found at this line错误,eclipse开发过程中,一些XML配置文件会报错,但是这些其实不是错,飘红的原因是因为eclips ...

  6. HTML5 classList API

    Having thrust myself into the world of JavaScript and JavaScript Libraries, I've often wondered: Whe ...

  7. 认识Jmeter操作界面

    使用工具:Jmeter(版本apache-jmeter-2.13) 安装前提:JDK的安装. 主要对GUI操作界面的讲解 (http://jmeter-plugins.org/downloads/al ...

  8. springboot+mybatis+shiro——shiro简介

    转载:[一]shiro入门 之 Shiro简介 一.shiro介绍: 官方网址:http://shiro.apache.org/introduction.html,shiro的功能包括:认证.授权.加 ...

  9. 【转】java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener

    http://www.cnblogs.com/softidea/p/6064091.html Caused by: java.lang.NoClassDefFoundError: org/spring ...

  10. Windows 使用iCloud日历

    作者:Lumos Night链接:https://www.zhihu.com/question/34287617/answer/97299386来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...