爬蟲基本原理與實戰---12、選擇器的用法
阿新 • • 發佈:2018-12-26
Scrapy提取資料有自己的一套機制,被稱作選擇器(selectors),通過特定的Xpath或者CSS表示式來選擇HTML檔案的某個部分
Xpath是專門在XML檔案中選擇節點的語言,也可以用在HTML上。
CSS是一門將HTML文件樣式化語言,選擇器由它定義,並與特定的HTML元素的樣式相關聯。
XPath選擇器
表示式 | 說明 |
---|---|
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元素 |
選取所有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元素 |