Scrapy終端是一個交互終端,咱們能夠在未啓動spider的狀況下嘗試及調試代碼,也能夠用來測試XPath或CSS表達式,查看他們的工做方式,方便咱們爬取的網頁中提取的數據。php
若是安裝了 IPython ,Scrapy終端將使用 IPython (替代標準Python終端)。 IPython 終端與其餘相比更爲強大,提供智能的自動補全,高亮輸出,及其餘特性。(推薦安裝IPython)css
進入項目的根目錄,執行下列命令來啓動shell:html
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"
圖片描述正則表達式
Scrapy Shell根據下載的頁面會自動建立一些方便使用的對象,例如 Response 對象,以及 Selector 對象 (對HTML及XML內容)。shell
response.body
將輸出response的包體,輸出 response.headers
能夠看到response的包頭。response.selector
時, 將獲取到一個response 初始化的類 Selector 的對象,此時能夠經過使用response.selector.xpath()
或response.selector.css()
來對 response 進行查詢。response.xpath()
或response.css()
一樣能夠生效(如以前的案例)。Scrapy Selectors 內置 XPath 和 CSS Selector 表達式機制scrapy
Selector有四個基本的方法,最經常使用的仍是xpath:ide
/html/head/title: 選擇<HTML>文檔中 <head> 標籤內的 <title> 元素 /html/head/title/text(): 選擇上面提到的 <title> 元素的文字 //td: 選擇全部的 <td> 元素 //div[@class="mine"]: 選擇全部具備 class="mine" 屬性的 div 元素
咱們用騰訊社招的網站http://hr.tencent.com/positio...舉例:測試
# 啓動 scrapy shell "http://hr.tencent.com/position.php?&start=0#a" # 返回 xpath選擇器對象列表 response.xpath('//title') [<Selector xpath='//title' data=u'<title>\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058</title'>] # 使用 extract()方法返回 Unicode字符串列表 response.xpath('//title').extract() [u'<title>\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058</title>'] # 打印列表第一個元素,終端編碼格式顯示 print response.xpath('//title').extract()[0] <title>職位搜索 | 社會招聘 | Tencent 騰訊招聘</title> # 返回 xpath選擇器對象列表 response.xpath('//title/text()') <Selector xpath='//title/text()' data=u'\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058'> # 返回列表第一個元素的Unicode字符串 response.xpath('//title/text()')[0].extract() u'\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058' # 按終端編碼格式顯示 print response.xpath('//title/text()')[0].extract() 職位搜索 | 社會招聘 | Tencent 騰訊招聘 response.xpath('//*[@class="even"]') 職位名稱: print site[0].xpath('./td[1]/a/text()').extract()[0] TEG15-運營開發工程師(深圳) 職位名稱詳情頁: print site[0].xpath('./td[1]/a/@href').extract()[0] position_detail.php?id=20744&keywords=&tid=0&lid=0 職位類別: print site[0].xpath('./td[2]/text()').extract()[0] 技術類
之後作數據提取的時候,能夠把如今Scrapy Shell中測試,測試經過後再應用到代碼中。網站
固然Scrapy Shell做用不單單如此,可是不屬於咱們課程重點,不作詳細介紹。編碼
官方文檔:[http://scrapy-chs.readthedocs...Spider][3]