Scrapy shell
使用Scrapy shell命令打開shell
scrapy shell http://detail.zol.com.cn/cell_phone_index/subcate57_list_1.html
運行這條命令之後,Scrapy shell 會使用url參數構造一個Request的對象,並提交給Scrapy引擎,頁面下載完成後,程序進入一個python shell當中,在此環境中已經創建好了一些變量(對象和函數),以下幾個最為常用:
request:最近一次下載對應的Request對象。
response:最近一次下載對應的Response對象。
fetche(req_or_url):該函數用於下載頁面,可傳入一個Request對象或url字符串,調用後會更新變量request和response。
view(response):調用系統默認瀏覽器顯示response中的頁面。
調用view函數,在瀏覽器中顯示response所包含的頁面信息:
view(response)
通常view函數打開的頁面和瀏覽器直接輸入url打開的頁面看起來很像。但是,前者是scrapy爬蟲下載的頁面,而後者是由瀏覽器下載的頁面,有時候他們是不相同的。在進行網頁分析是,使用view函數更加可靠。
利用Chrome開發者工具看到,在
- 中可以提取手機名、參考報價以及詳情頁面。
在scrapy shell中嘗試著提取這些信息:
//提取手機名
In:phone_name = response.xpath('//*[@id="J_PicMode"]/li/h3/a/text()').extract_first()
Out: 'vivo X20(全網通) '
//提取手機價格
In:phone_price =response.xpath(' //*[@id="J_PicMode"]/li/div[1]/span[2]/b[2]/text()').extract_first()
Out: '2998'
//提取手機詳情頁
phone_detail_url =response.xpath('//*[@id="J_PicMode"]/li/h3/a/@href').extract_first()
使用fetch函數進入vivo x20手機詳情頁面並在瀏覽器中顯示:
In:fetch(response.urljoin(phone_detail_url))
2018-01-07 22:47:50 [scrapy.core.engine] DEBUG: Crawled (200)
In:view(response)
閱讀更多 初沏的茶 的文章