Scrapy选择器XPath和CSS
XPath选择器
XPath使用路径选择器选取节点。
表达式 | 含义 |
---|
/ | 选取此节点的所有子节点 | // | 从匹配选择的当前节点选择选择文档中的节点,不考虑他们的位置 | . | 选取当前节点 | … | 选取当前节点的父亲节点 | @ | 选取属性 | * | 匹配任何元素节点 | @* | 匹配任何属性节点 | Node | 匹配任何类型的节点 |
示例
<superhero>
<class>
<name lang="en"> Tony Stark </name>
<alias> Tron Man </alias>
<sex>male </sex>
<birthday> 1969 </birthday>
<age> 47 </age>
</class>
<class>
<name lang="en">Peter Benjamin Parker </name>
<alias> Spider Man </alias>
<sex> male </sex>
<birthday> unkonwn </birthday>
<age> unknown </age>
</class>
<class>
<name lang="en"> Steven Rogers </name>
<alias> Caption America </alias>
<sex> male </sex>
<birthday>19200704 </birthday>
<alias> Captain America </alias>
<sex> male </sex>
<age> 96 </age>
</class>
</superhero>
使用XPath提取
from scrapy.selector import Selector
with open('./superhero.xml','r') as fp:
body=fp.read()
Selector(text=body).xpath('/*').extract()
CSS选择器
CSS规则=构成器+声明
选择器 | 值 | 含义 |
---|
.class | .intro | 选择class=“intro”的所有元素 | #id | #firstname | 选择id-=“firstname”的所有元素 | * | * | 选择所有元素 | element | p | 选择所有p元素 | element,element | div,p | 选择所有div元素和p元素 | attribute | [target] | 选择带有target属性的所有元素 | attribute=value | [target=_blank] | 选择target="_blank"的所有元素 |
Scrapy中CSS的基本用法 ①response.css(‘a’)返回的是selector对象, ②response.css(‘a’).extract()返回的是a标签对象 ③response.css(‘a::text’).extract_first()返回的是第一个a标签中文本的值 ④response.css(‘a::attr(href)’).extract_first()返回的是第一个a标签中href属性的值 ⑤response.css(‘a[href*=image]::attr(href)’).extract()返回所有a标签中href属性包含image的值 ⑥response.css(‘a[href*=image] img::attr(src)’).extract()返回所有a标签下image标签的src属性
|