(2018-05-20.Python從Zero到One)4、(爬蟲)scrapy 框架__1.4.3Scrapy Shell

Scrapy Shell

Scrapy終端是一個交互終端阔挠,我們可以在未啟動spider的情況下嘗試及調(diào)試代碼飘庄,也可以用來測試XPath或CSS表達式,查看他們的工作方式购撼,方便我們爬取的網(wǎng)頁中提取的數(shù)據(jù)跪削。

如果安裝了 IPython ,Scrapy終端將使用 IPython (替代標(biāo)準(zhǔn)Python終端)份招。 IPython 終端與其他相比更為強大切揭,提供智能的自動補全,高亮輸出锁摔,及其他特性。(推薦安裝IPython)

啟動Scrapy Shell

進入項目的根目錄哼审,執(zhí)行下列命令來啟動shell:

scrapy shell "http://www.itcast.cn/channel/teacher.shtml"

day54_爬蟲-scrapy框架-01.png

Scrapy Shell根據(jù)下載的頁面會自動創(chuàng)建一些方便使用的對象谐腰,例如 Response 對象孕豹,以及 Selector 對象 (對HTML及XML內(nèi)容)

  • 當(dāng)shell載入后十气,將得到一個包含response數(shù)據(jù)的本地 response 變量励背,輸入 response.body將輸出response的包體,輸出 response.headers 可以看到response的包頭砸西。

  • 輸入 response.selector 時叶眉, 將獲取到一個response 初始化的類 Selector 的對象,此時可以通過使用 response.selector.xpath()response.selector.css() 來對 response 進行查詢芹枷。

  • Scrapy也提供了一些快捷方式, 例如 response.xpath()response.css()同樣可以生效(如之前的案例)衅疙。

Selectors選擇器

Scrapy Selectors 內(nèi)置 XPath 和 CSS Selector 表達式機制

Selector有四個基本的方法,最常用的還是xpath:

  • xpath(): 傳入xpath表達式鸳慈,返回該表達式所對應(yīng)的所有節(jié)點的selector list列表
  • extract(): 序列化該節(jié)點為Unicode字符串并返回list
  • css(): 傳入CSS表達式饱溢,返回該表達式所對應(yīng)的所有節(jié)點的selector list列表,語法同 BeautifulSoup4
  • re(): 根據(jù)傳入的正則表達式對數(shù)據(jù)進行提取走芋,返回Unicode字符串list列表

XPath表達式的例子及對應(yīng)的含義:

/html/head/title: 選擇<HTML>文檔中 <head> 標(biāo)簽內(nèi)的 <title> 元素
/html/head/title/text(): 選擇上面提到的 <title> 元素的文字
//td: 選擇所有的 <td> 元素
//div[@class="mine"]: 選擇所有具有 class="mine" 屬性的 div 元素

嘗試Selector

我們用騰訊社招的網(wǎng)站http://hr.tencent.com/position.php?&start=0#a舉例:

# 啟動
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-運營開發(fā)工程師(深圳)
職位名稱詳情頁:

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]
技術(shù)類

以后做數(shù)據(jù)提取的時候,可以把現(xiàn)在Scrapy Shell中測試翁逞,測試通過后再應(yīng)用到代碼中肋杖。

當(dāng)然Scrapy Shell作用不僅僅如此,但是不屬于我們課程重點挖函,不做詳細介紹状植。

官方文檔:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/shell.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挪圾,隨后出現(xiàn)的幾起案子浅萧,更是在濱河造成了極大的恐慌,老刑警劉巖哲思,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洼畅,死亡現(xiàn)場離奇詭異,居然都是意外死亡棚赔,警方通過查閱死者的電腦和手機帝簇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靠益,“玉大人丧肴,你說我怎么就攤上這事‰屎螅” “怎么了芋浮?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壳快。 經(jīng)常有香客問我纸巷,道長镇草,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任瘤旨,我火速辦了婚禮梯啤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘存哲。我一直安慰自己因宇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布祟偷。 她就那樣靜靜地躺著察滑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肩袍。 梳的紋絲不亂的頭發(fā)上杭棵,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音氛赐,去河邊找鬼魂爪。 笑死,一個胖子當(dāng)著我的面吹牛艰管,可吹牛的內(nèi)容都是我干的滓侍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼牲芋,長吁一口氣:“原來是場噩夢啊……” “哼撩笆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缸浦,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤夕冲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裂逐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歹鱼,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年卜高,在試婚紗的時候發(fā)現(xiàn)自己被綠了弥姻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡掺涛,死狀恐怖庭敦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情薪缆,我是刑警寧澤秧廉,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響定血,放射性物質(zhì)發(fā)生泄漏赔癌。R本人自食惡果不足惜诞外,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一澜沟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峡谊,春花似錦茫虽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啥纸,卻和暖如春号杏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斯棒。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工盾致, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荣暮。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓庭惜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親穗酥。 傳聞我的和親對象是個殘疾皇子护赊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容