原文标题:《Python网络爬虫—Scrapy的选择器Xpath》 对原文有所修改和演绎

优势

XPath相较于CSS选择器,可以更方便的选取

  • 没有id class name属性的标签
  • 属性或文本特征不显著的标签
  • 嵌套层次极其复杂的标签

XPath路径

定位方式

/ 绝对路径 表示从根节点开始选取
// 相对路径 表示从任意节点开始

基本的节点定位

#查找html下的body下的form下的所有input节点
/html/body/form/input #查找所有input节点
//input

使用通配符*定位

#查找form节点下的所有节点
//form/*#查找所有节点//* #查找所有input节点(input至少有爷爷辈亲戚节点)
//*/input

使用索引定位

#定位 第8个td下的 第2个a节点
//*/td[7]/a[1] #定位 第8个td下的 第3个span节点
//*/td[7]/span[2] #定位 最后一个td下的 最后一个a节点
//*/td[last()]/a[last()]

使用属性

#定位所有包含name属性的input节点
//input[@name] #定位含有属性的所有的input节点
//input[@*] #定位所有value=2的input节点
//input[@value='2'] #使用多个属性定位
//input[@value='2'][@id='3']
//input[@value='2' and @id='3']

使用函数定位

函数 含义
contains(,) 前者中包含后者
text() 获取节点中的字符串
starts-with() 匹配起始位置的字符串

<a class="menu_hot" href="/ads/auth/promote.html">应用推广</a>

#定位href属性中包含“promote.html”的所有a节点
//a[contains(@href,'promote.html')] #元素内的文本为“应用推广”的所有a节点
//a[text()='应用推广'] #href属性值是以“/ads”开头的所有a节点
//a[starts-with(@href,'/ads')]

使用XPath轴

这部分类似BeautifulSoup中的sibling、parents、children方法。

轴名称 含义
ancestor 选取当前节点的所有先辈节点
ancestor-or-self 选取当前节点的所有先辈节点及当前节点自己
attribute 选取当前节点的所有属性
child 选取当前节点的所有子节点
descendant 选取当前节点的所有后代节点
descendant-or-self 选取当前节点的所有后代节点及当前节点自己
following 选取党建节点结束后的所有节点
parent 选取当前节点的父节点
preceding-sibling 选取当前节点之前的所有同辈节点
self 选取当前节点自己
原文地址:http://mp.weixin.qq.com/s/UT4UFDpgo2ER300zq_uqsQ

Python中Scrapy框架元素选择器XPath的简单实例的更多相关文章

  1. python爬虫中scrapy框架是否安装成功及简单创建

    判断框架是否安装成功,在新建的爬虫文件夹下打开盘符中框输入cmd,在命令中输入scrapy,若显示如下图所示,则说明成功安装爬虫框架: 查看当前版本:在刚刚打开的命令框内输入scrapy versio ...

  2. python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

    操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...

  3. python的scrapy框架的使用 和xpath的使用 && scrapy中request和response的函数参数 && parse()函数运行机制

    这篇博客主要是讲一下scrapy框架的使用,对于糗事百科爬取数据并未去专门处理 最后爬取的数据保存为json格式 一.先说一下pyharm怎么去看一些函数在源码中的代码实现 按着ctrl然后点击函数就 ...

  4. python爬虫scrapy框架

    Scrapy 框架 关注公众号"轻松学编程"了解更多. 一.简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量 ...

  5. Python爬虫Scrapy框架入门(2)

    本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...

  6. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  7. 基于python的scrapy框架爬取豆瓣电影及其可视化

    1.Scrapy框架介绍 主要介绍,spiders,engine,scheduler,downloader,Item pipeline scrapy常见命令如下: 对应在scrapy文件中有,自己增加 ...

  8. Python爬虫 ---scrapy框架初探及实战

    目录 Scrapy框架安装 操作环境介绍 安装scrapy框架(linux系统下) 检测安装是否成功 Scrapy框架爬取原理 Scrapy框架的主体结构分为五个部分: 它还有两个可以自定义下载功能的 ...

  9. Python爬虫Scrapy框架入门(1)

    也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架. 从表层来看,与Java框架引入jar包.配置xml或.property文件不同,Scrapy的模 ...

随机推荐

  1. 排查 Maxwell can not find database 并且使用 MySQL binlog 解决相关问题

    目前我们在使用 Maxwell 在读线上机器的 binlog 同步我们的离线数据库. 这次错误定位上,首先线要确定问题是发生在生产者 还是队列 还是消费者.经过查看各机器上任务的运行日志,定位到了问题 ...

  2. vscode運行vue和html

    html 选中html文件,右键选择view in broswer.

  3. java静态工厂

    本文摘自:https://www.jianshu.com/p/ceb5ec8f1174 本文略长,所以先来个内容提要 序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器 ...

  4. Maven依赖范围及传递

    .Maven因为执行一系列编译.测试和部署运行等操作,在不同的操作下使用的classpath不同,依赖范围就是用来控制依赖与三种 classpath(编译classpath.测试classpath.运 ...

  5. HTML 中的 href\src\url

    1. 2. -------from Stack Overflow <a><link>使用 href; <img><script>使用 src;

  6. SQL 添加索引

    使用CREATE 语句创建索引 CREATE INDEX index_name ON table_name(column_name,column_name) include(score) 普通索引 C ...

  7. DotNetty 实现 Modbus TCP 系列 (一) 报文类

    本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 Modbus TCP/IP 报文 报文最大长度为 260 byte (ADU = 7 byte MBAP Header ...

  8. Nginx 用最快方式让缓存失效

    陶辉103 一般让及时缓存失效针对nginx官方是收费的 我们可以用第三方模块 https://github.com/FRiCKLE/ngx_cache_purge proxy_cache_path ...

  9. BZOJ4849[Neerc2016]Mole Tunnels——模拟费用流+树形DP

    题目描述 鼹鼠们在底下开凿了n个洞,由n-1条隧道连接,对于任意的i>1,第i个洞都会和第i/2(取下整)个洞间有一条隧 道,第i个洞内还有ci个食物能供最多ci只鼹鼠吃.一共有m只鼹鼠,第i只 ...

  10. 安卓Android基础第三天——数据库,ListView

    数据库介绍sqlite问:什么情况下使用数据库?答:有大量相似结构的数据需要存储的时候 数据库的创建定义一个类继承SqliteOpenHelpercontext:上下文name:数据库名字,如&quo ...