爬虫基本原理与实战---12、选择器的用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qd_ltf/article/details/79715258

Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分
Xpath是专门在XML文件中选择节点的语言,也可以用在HTML上。
CSS是一门将HTML文档样式化语言,选择器由它定义,并与特定的HTML元素的样式相关联。

XPath选择器

参考:http://www.cnblogs.com/MUMO/p/5732836.html
常用的路径表达式,这里列举了一些常用的,XPath的功能非常强大,内含超过100个的内建函数。
下面为常用的方法:

表达式 说明
nodeName 选取此节点的所有节点
/nodeName 选取根元素nodeName
nodeName/a 选取所有属于nodeName的子元素的a元素
//div 选取所有div元素(不论出现在文档的任何地方)
nodeName//div 选取所有属于nodeName元素的后代的div元素,不管它出现在nodeName之下的任何位置
//@class 选取所有有名为class的属性的节点
/nodeName/div[1] 选取属于nodeName子元素的第一个div元素
/nodeName/div[last()] 选取属于nodeName子元素的最后一个div元素
/nodeName/div[last()-1] 选取属于nodeName子元素的倒数第二个div元素
//div[@lang] 选取所有拥有lang属性的div元素
//div[@lang=’eng’] 选取所有lang属性为eng的divf元素
/div/* 选取属于div元素的所有子节点
//* 选取所有元素
//div[@*] 选取所有带属性的divf元素
//div/a | //div/p 选取所有div元素的a和p元素
//span | //ul 选取文档中的span和ul元素
nodeName/div/p | //span 选取所有属于nodeName元素的div元素的p元素,以及文档中所有有span元素
//div/text() 提取出div下面的内容
xpath(‘//div/text()’).extract() 提取出数据内容列表

CSS选择器

参考:https://blog.csdn.net/ahri_j/article/details/72196823
CSS层叠样式表,语法由两个主要部分组成:选择器,一条或多条声明
Selector {declaration1;declaration2;……}
下面为常用的使用方法

表达式 说明
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://jobbole.com“] 选取所有href属性为jobbole.com值的a元素
a[href*=’jobbole’] 选取所有href属性包含jobbole的a元素
a[href^=”http”] 选取所有href属性值以http开头的a元素
a[href$=”.jpg”] 选取所有href属性值以.jpg结尾的a元素
input[type=radio]:checked 选择选中的input元素
div:not(#container) 选取所有id非container的div元素
li:nth-child(3) 选择第三个li元素
tr:nth-child(2n) 选择第偶数个tr元素

参考:https://www.cnblogs.com/zhaof/p/7189860.html

猜你喜欢

转载自blog.csdn.net/qd_ltf/article/details/79715258