xpath
节点:
1. 父节点
2. 子节点
3. 同胞节点,或兄弟节点
4. 先辈节点
5. 后代节点
语法:
1. article 选取所有artical元素的所有子节点
2. /article 选取根元素article
3. article/a 选取所有属于article的子元素的a元素
4. //div 选取所有div子元素(不论出现在文档任何地方)
5. artivle//div 选取所有属于article元素的后代的div元素,不管他出现在article元的之下的何位置
6. //@class 选取所有名为class的属性
语法--谓语
1. /article/div[1] 选取属于article子元素的第一个div元素
2. /article/div[last()] 选取属于article子元素的最后一个div元素
3. /article/div[last()-1] 选取属于article子元素的倒数第二个div元素
4. //div[@lang] 选取所有拥有lang属性的div元素
5. //div[@lang='eng'] 选取所有lang属性为eng的div元素
其他用法
1. /div/* 获取属于div元素的所有子节点
2. //* 获取所有元素
3. //div[@*] 获取所有嗲属性的title元素
4. //div/a| //div/p 获取所有属于div的a元素和p元素
5. //span | //ul 获取文档中的span和ul元素
6. article/div/p | //span 选取所有属于article元素的div元素的p元素以及文档中所有的span元素
7. //span[contains(@class,'vote-post-up')] 寻找class属性中包含vote-post-up的span元素
###################################################################
css选择器
* 选择所有节点
#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属性为"http://jobbole.com"的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元素
tr:nth-child(2n) 选择第偶数个tr
例子:
1.response.css(".entry-header h1::text").extract() 提取文本
2. response.css(".url a::attr(href)").extract() 提取某个属性的值