Scrapy——选择器
Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分
Xpath是专门在XML文件中选择节点的语言,也可以用在HTML上。
CSS是一门将HTML文档样式化语言,选择器由它定义,并与特定的HTML元素的样式相关联。
Xpath常用的方法:
nodeName 选取此节点的所有节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,不考虑它们的位置
. 选择当前节点
.. 选取当前节点的父节点
@ 选取属性
* 匹配任何元素节点
@* 匹配任何属性节点
Node() 匹配任何类型的节点
CSS常用的使用方法:
.class .color 选择class=”color”的所有元素
#id #info 选择id=”info”的所有元素
* * 选择所有元素
element p 选择所有的p元素
element,element div,p 选择所有div元素和所有p元素
element element div p 选择div标签内部的所有p元素
[attribute] [target] 选择带有targe属性的所有元素
[arrtibute=value] [target=_blank] 选择target=”_blank”的所有元素
|
xpath选择器 |
css选择器 |
无法找到匹配 |
可自定义返回值response.xpath('//title/text()').extract_first(default='not-found') 默认为None |
同 |
提取到匹配到的元素(返回列表) |
.extract()方法 |
同 |
提取到第一个匹配到的元素(返回字符串) |
.extract_first()方法 |
同 |
获取文本 |
response.xpath('//title/text()') |
response.css('title::text') |
获取属性 |
response.xpath('//base/@href') |
response.css('base::attr(href)') |
获取a标签中所有href中包含image字段的href属性 |
response.xpath('//a[contains(@href, "image")]/@href') |
response.css('a[href*=image]::attr(href)') |
获取标签中标签的属性 |
response.xpath('//a[contains(@href, "image")]/img/@src') |
response.css('a[href*=image] img::attr(src)') 注意img前面有空格 |
可与正则表达式连用re()返回列表,re_first()返回第一个匹配字符串 |
response.xpath('//a/text').re(r'Name:\s*(.*)') |
response.css('a::text').re(r'Name:\s*(.*)') |