Python中Scrapy框架元素选择器XPath的简单实例
2024-10-10 07:46:54
原文标题:《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
最新文章
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
- arcgis engine 中出现的内存堆栈溢出问题。
- ubuntu 安装 netbeans C++ IDE
- [js开源组件开发]js多选日期控件
- jdk8飞行记录器配置
- linux下安装vtune_amplifier_xe_2015_update4
- Finding Nemo(bfs)
- word2013 无endnote选项卡咋办
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
- 关于Python中yield的一些个人见解
- 一对多Excel自定义函数:SVLOOKUP
- Cocos2d-x游戏开发之lua编辑器 Sublime 搭建,集成cocos2dLuaApi和自有类
- 2.2String工具类
- (Python基础)最Low三级菜单
- git pull的理解 以及 git conflict的解决
- 双系统windows+linux如何正确删除linux
- Shell脚本笔记(七)控制Shell脚本
- 发票打印不全不完整的解决方案(Win10)
- C#7.2——编写安全高效的C#代码
- How to temporally disable IDE tools (load manually)
热门文章
- HDU 5898 odd-even number
- C# Note21: 扩展方法(Extension Method)及其应用
- centos7系统管理和运维实战——运维必备的网络管理技能(1)
- Jmeter安装与使用(压测)
- spring程序打包war,直接通过-jar启动,并指定spring.profiles.active参数控制多环境配置
- Java使用RabbitMQ之消息确认(confirm模板)
- 百度云虚拟主机配置 Thinkphp5.1
- sun.misc.BASE64Encoder----》找不到jar包的解决方法
- Web API2 使用默认Identity
- iOS 通知推送APNS