W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
如果你是一個(gè)長(zhǎng)期的用戶(hù),你可能熟悉 ?.extract()? 和 ?.extract_first()? 選擇器方法。許多博客文章和教程也在使用它們。這些方法仍然由Scrapy支持,有 沒(méi)有計(jì)劃 去貶低他們。
但是,現(xiàn)在使用 ?.get()? 和? .getall()? 方法。我們認(rèn)為這些新方法會(huì)產(chǎn)生更簡(jiǎn)潔和可讀的代碼。
下面的例子展示了這些方法如何相互映射。
1、?SelectorList.get()? 是一樣的 ?SelectorList.extract_first()? :
>> response.css('a::attr(href)').get() 'image1.html'
>>> response.css('a::attr(href)').extract_first() 'image1.html'
2、?SelectorList.getall()? 是一樣的 ?SelectorList.extract()? :
>>> response.css('a::attr(href)').getall() ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']
>>> response.css('a::attr(href)').extract() ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']
3、?Selector.get()? 是一樣的 ?Selector.extract()? :
>>> response.css('a::attr(href)')[0].get() 'image1.html'
>>> response.css('a::attr(href)')[0].extract() 'image1.html'
4、為了保持一致性,還有 ?Selector.getall()? ,返回一個(gè)列表:
>>> response.css('a::attr(href)')[0].getall() ['image1.html']
所以,主要的區(qū)別在于 ?.get()? 和 ?.getall()? 方法更容易預(yù)測(cè): ?.get()? 總是返回單個(gè)結(jié)果, ?.getall()? 始終返回所有提取結(jié)果的列表。用 ?.extract()? 方法:結(jié)果是否為列表并不總是顯而易見(jiàn)的;或者得到一個(gè)單獨(dú)的結(jié)果 ?.extract()? 或 ?.extract_first()? 應(yīng)該被調(diào)用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: