python爬虫:scrapy框架xpath和css选择器语法

时间:2022-10-06 05:36:59

Xpath基本语法

举例元素标签为artical标签

语法 说明
artical 选取所有artical元素的子节点
/artical 选取根元素artical
artical/a 选取所有属于artical的子元素a元素
//div 选取所有div 子元素,无论div在任何地方
artical//div 选取所有属于artical的div 元素,无论div元素在artical的任何位置
//@class 选取所有名为class 的属性的

谓语

语法 说明
/artical/div[1] 选取所有属于artical 子元素的第一个div元素
/artical/div[last()] 选取所有属于artical子元素的最后一个元素
/artical/div[last()-1] 选取所有属于artical子元素的倒数低2个元素
//div[@lang] 选取所有拥有属性为lang的元素
//div[@lang=”eng”] 选取所有div下lang属性为eng的元素
/div/* 选取所有属于div元素的所有子节点
//* 选取所有元素
//div[@*] 选取所有带属性的title元素
//div/a | //div/p 选取所有div元素的a和p 元素
//span | //ul 选取文档中所有span和ul 的元素
artical/div/pl | //span 选取所有div下的pl和文档中所有span

注意事项:

1) 按照审查元素的写法不一定正确,要按照网页源码的才行

因为不一样,网页源码才是你看到的

2) 浏览器有自带的复制xpath功能,firefox下载firebug插件

3) xpath有c的速度,所以按照[@class=""]准确性较高

CCS选择器语法

语法 说明
* 选择所有节点
#container 选择id为container的节点
.container 选择所有class包含container的节点
li a 选取所有li 下所有a节点
ul + p 选取ul后面的第一个p元素
div#container > ul 选取id为container的div的第一个ul子元素
ul ~p 选取与ul相邻的所有p元素
a[title] 选取所有有title属性的a元素
a[href=”http://baidu.com”] 选取所有href属性为http://baidu.com的a元素
a[href*=”baidu”] 选取所有href属性值中包含baidu的a元素
a[href^=”http”] 选取所有href属性值中以http开头的a元素
a[href$=”.jpg”] 选取所有href属性值中以.jpg结尾的a元素
input[type=radio]:checked 选择选中的radio的元素
div:not(#container) 选取所有id为非container 的div属性
li:nth-child(3) 选取第三个li元素
li:nth-child(2n) 选取第偶数个li元素

参考链接:https://www.jianshu.com/p/b67d0d851c1a
來源:简书