Scrapy shell一句話介紹
Scrapy shell也稱"Scrapy終端",是一個交互終端,“輸入即響應”模式,使我們可以在未啓動spider爬蟲的情況下嘗試及調試代碼。
更爲方便的是,我們也可以用來直接測試XPath或CSS表達式,而不用import導入相應模塊。通過查看其運行的結果,方便了我們分析目標網頁,並從中測試我們的表達式是否提取到了數據。
總之,Scrapy shell可以用來調試測試爬蟲。
Scrapy內置的Selector選擇器
在Scrapy中使用xpath或是CSS等,之所以不用再導入第三方包,是因爲在Scrapy中已內置了相應的Selector選擇器。
Selector有四個基本的方法。
(1)xpath( )
我們通過書寫xpath表達式,可使程序返回該表達式所對應的所有節點的selector list選擇器列表,從而篩選我們想要定位的元素。
(2)extract( )
序列化節點爲Unicode字符串,並返回list列表。
(3)css( )
根據css表達式,返回該表達式所對應的所有節點的selector list選擇器列表,語法和 BeautifulSoup4相同。
(4)re( )
根據書寫的正則表達式,對數據進行提取,返回Unicode字符串list列表。
Scrapy shell 實戰演練
以爬取本博客目錄爲例,來演練一下Scrapy shell的用法。
(1)打開CMD命令窗口,直接輸入命令:scrapy shell 目標網址
(2)等待系統進入交互模式後,我們使用命令:response (查看目標狀態響應狀態)
(3)可以看到,響應狀態碼爲200表示響應成功。此時我們藉助谷歌瀏覽器提取目標數據的xpath。
(4)經過對網頁分析後,書寫xpath表達式。在scrapy shell中輸入命令:response.xpath(’ 你的XPATH /text()’)
(5)可以看到此時已經可以提取到數據了,我們的xpath表達式測試成功。
但我們發現此時提取到的仍是xpath對象,這時我們就可以使用extract()方法來將我們的數據轉化爲列表。
輸入命令:response.xpath(’ 你的XPATH /text()’).extract()
(6)如果我們只想要提取第一篇文章名字,和python中對列表的操作是一樣的,我們只需要加個“0下標”即可。
輸入命令:response.xpath(’ 你的XPATH /text()’).extract()[1]
(7)想要退出scrapy shell 去正式編寫爬蟲時,輸入命令:exit() 即可退出scrapy shell 終端模式。