xpath
即 xml 路径语言,可以快速定位到xml文件中元素的位置
表达式 描述
/ 选中文档中的根
. 选中当前节点
.. 当前节点的父节点
ELEMENT 子节点中所有ELEMENT元素节点
//ELEMENT 后代节点中所有ELEMENT元素节点
* 所有元素子节点
text() 文本子节点
@ATTR 选中名为ATTR的属性节点
@* 所有属性节点
[谓语] 用来查找某个特定的节点或者包含某个特定值的节点
CSS
即 层叠样式表
表达式 描述
* 选中所有元素
E 选中E元素
E1,E2 选中E1,E2元素
E1 E2 选中E1后代元素中的E2元素
E1>E2 选中E1子元素中的E2元素
E1+E2 选中E1兄弟元素中的E2元素
.CLASS 选中class的属性包含class的元素
#ID 选中ID属性为id的元素
[ATTR] 选中包含ARRT属性的元素
[ARRT=VALUE] 选中包含ARRT属性并且值为VALUE的元素
[ARRT~=VALUE] 选中包含ARRT属性并且值包含VALUE的元素
E:nth-child(n) 选中E元素,且该元素必须是其父元素的第n个子元素
E:nth-last-child 选中E元素,且该元素必须是其父元素的倒数第n个子元素
E:first-child 选中E元素,且给元素必须是其父元素的第一个子元素
E:last-child 选中E元素,且给元素必须是其父元素的最后一个子元素
E:empty 选中没有子元素的E元素
E::text 选中E元素的文本节点
注意:
CSS语法比xpath要简洁一些,但是功能不如xpath强大。实际上在scrapy中,当我们调用selector对象的css方法时,其内部会用python库cssselect将css选择器表达式翻译成xpath表达式,然后调用Selector对象的XPATH方法。