1. 程式人生 > >Python爬蟲框架 scrapy之xpath選擇器 css選擇器

Python爬蟲框架 scrapy之xpath選擇器 css選擇器

文章目錄

一 、xpath

1、節點選擇

/:從根節點選取

//:從匹配的當前節點選擇文件中的節點,而不考慮它們的位置

.:選擇當前節點

…:選擇當前節點的父節點

@:選取屬性

response.xpath('/html/head/title') --選擇HTML文件head元素下的title標籤
response.xpath('/html/head/title/text()')--選擇title元素下的文字內容
response.xpath('//title')--選擇所有title元素
response.xpath('//span[@class="text"]/text()').extract()--選擇所有包含class="text"的span標籤元素
response.xpath('//span[contains(@class,"text")]/text()').extract()  --等價與上一個選擇器
response.xpath('//div[@class="visa_table_info"][@data-key="1"]') --同時選擇多個屬性
#使用`//text()`提取包含所有子元素的文字
response.xpath('//div[@class="tags"]//text()').extract()
#使用`string(.)`提取包含所有子元素的文字
data=response.xpath('//div[@class="tags"]')
data.xpath("string(.)").extract()
#提取屬性值
data.xpath('//a/@href')

二、 css

css選擇

1、定位元素後,再選擇元素的文字內容

response.css('title::text')--選擇title元素下的文字內容
#選擇類為tags標籤內的文字
response.css('.tags::text').extract()

2、定位元素後,再選擇該元下面的元素

//通過 名為 video_part_lists 的Class 中下面的 li 標籤
liList = response.css('.video_part_lists li') 

3、定位元素後再選擇該元素內的屬性值

 li.css('a::attr(href)').extract()

4、css帶空格,將空格替換成.即可
<ul class="date-ul fn-left"></ul>

response.css(".date-ul.fn-left")

5、以空格開頭的,同樣忽略掉空格

<a href="/spec/32582/ge4/?summarykey=520662&amp;g#pvareaid=2112104" class=" dust">後排空間較小(4)</a>
response.css(".dust ::text").extract_first()

三、xpath函式操作

1、取文字:text()

response.xpath("//dl/dt/text()")

2、取包涵所有子元素的文字:string(.)

response.xpath("//dl/dt/string(.)")

3、取屬性:@attri

response.xpath("//dl/a/@href")

4、取當前元素的元素名稱:name()

response.xpath("//dl/*/name()")

5、取當前元素的子元素:*

response.xpath("//dl/*")