scrapy相关

第一部分:xpath

一:基础语法

1.表达式:node

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

2.谓语:bash

[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. spa

相关文章
相关标签/搜索