scrapy相关

本文介绍了 XPath 的基本语法及使用方法,包括节点选择、属性筛选等核心概念,并提供了多种实用示例帮助理解。

第一部分:xpath

一:基础语法

1.表达式:

nodename    # 节点名
/           # 若在起始位置,则表明从根节点选取node;若不在起始位置,表明选取子节点,本意都是选取全部子节点
//          # 从任意位置选取node节点
@           # 选取属性
*           # 通配符
.            #当前节点复制代码

2.谓语:

[n]                  # 第n个, -- eg:第一个[1]
[last()]             # 最后一个
[position()<n]       # 第n个位置之前的全部指定节点
node[@attr]          # 拥有attr属性的节点
node[@attr='val']    # 属性attr的值为val的节点
node[contains(@class, 'val')]    # class属性中包含val的节点复制代码

二:轴

A/child::B ==> A/B         # 选取A节点的子节点B
parent                     # 父节点
descendant                 # 所有后代节点
ancestor                   # 所有先辈节点
descendant-or-self         # 所有后代元素及其本身
preceding-sibling          # 所有先辈节点及其本身
following-sibling          # 当前节点后面的同级节点
preceding                  # 整个文档中,当前节点之前的所有节点
preceding-sibling          # 父节点中,当前节点之前的所有同级节点
following                  # 整个文档中,当前节点之后的所有节点
self                       # 当前节点本身
attribute                  # 当前节点的所有属性
namespace                  # 当前节点所有的命名空间复制代码

三:运算符

|          # 并集
+          # 加法
-          # 减法
*          # 乘法
div        # 除法
=          # 等于
!=         # 不等于
<          # 小于
<=         # 小于
>          # 大于
>=         # 大于等于
or         # 或
and        # 与
mod        # 取余复制代码

四:示例

question      # 选取所有 question 元素的所有子节点
/question     #选取根元素 question
question/a    # 选取 question 元素下所有为 a 的子元素
//div         # 选取所有的 div 元素,不论其出现在文档的任何地方
question//div # 选取 question 元素下所有的 div 后代元素 (/ 选取的是直接子元素,这里是所有的后代元素)
question//span/text() #选取 question 元素下所有 span 元素中的文本值
question//a/@href     #选取 question 元素下所有 a 元素中的 href 属性值。 @ 后面可以是任意属性名,均可以取到值

/question/div[1]        # 选取 question 的第一个 div 子元素。 注意这里第一个是从索引 1 开始的
/question/div[last()]   # 选取 question 第最后一个 div 子元素
/question/div[last()-1] # 选取 question 的倒数第二个 div 子元素
//div[@lang]            # 选取所有拥有lang 属性的 div 元素
//div[@lang='eng']      # 选取所有 lang 属性为 eng 的 div 元素

/div/*    # 选取属于 div 元素的所有子节点
//*       # 选取所有元素
//div/a | //div/p #选 取所有 div 元素的 a 元素或者 p 元素
//span | //input  # 选取文档中所有的 span 和 input 元素复制代码

五:补充

starts-with        #匹配一个属性开始位置的关键字
eg: //input[starts-with(@name,'name1')]     #查找name属性中开始位置包含'name1'关键字的页面元素
contains           #匹配一个属性值中包含的字符串
eg: //input[contains(@name,'na')]     #查找name属性中包含na关键字的页面元素
复制代码


第二部分: 项目创建

1. 



转载于:https://juejin.im/post/5a718dadf265da3e3c6c77d9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值