Python爬蟲(chóng)Scrapy(三)_Scrapy Shell

本篇將介紹使用scrapy的命令躯概,更多內(nèi)容請(qǐng)參考:Python學(xué)習(xí)指南

Scrapy Shell

Scrapy終端是一個(gè)交互終端,我們可以在未啟動(dòng)spider的情況下嘗試及調(diào)試代碼畔师,也可以用來(lái)測(cè)試XPath或CSS表達(dá)式娶靡,查看他們的工作方式,方便我們從爬取的網(wǎng)頁(yè)中提取數(shù)據(jù)茉唉。

如果安裝了IPython固蛾,Scrapy終端將使用IPython(替代標(biāo)準(zhǔn)Python客戶(hù)端)。IPython終端與其它相比更為強(qiáng)大度陆,提供智能的自動(dòng)補(bǔ)全艾凯,全亮輸出,即其它特性懂傀。(推薦安裝IPython)

啟動(dòng)Scrapy Shell

進(jìn)入項(xiàng)目的根目錄趾诗,執(zhí)行下列命令來(lái)啟動(dòng):

scrapy shell 'http://www.cnblogs.com/miqi1992/'
[root@centos chapter04]# scrapy shell 'http://www.cnblogs.com/miqi1992'
2017-12-25 16:19:58 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapybot)
2017-12-25 16:19:58 [scrapy.utils.log] INFO: Overridden settings: {'LOGSTATS_INTERVAL': 0, 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter'}
2017-12-25 16:19:58 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.memusage.MemoryUsage',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.corestats.CoreStats']
2017-12-25 16:19:58 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2017-12-25 16:19:58 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2017-12-25 16:19:58 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2017-12-25 16:19:58 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-12-25 16:19:58 [scrapy.core.engine] INFO: Spider opened
2017-12-25 16:19:58 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://www.cnblogs.com/miqi1992> (referer: None)
[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x2ea9b10>
[s]   item       {}
[s]   request    <GET http://www.cnblogs.com/miqi1992>
[s]   response   <200 http://www.cnblogs.com/miqi1992>
[s]   settings   <scrapy.settings.Settings object at 0x2ea9990>
[s]   spider     <DefaultSpider 'default' at 0x32a6f10>
[s] Useful shortcuts:
[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s]   fetch(req)                  Fetch a scrapy.Request and update local objects 
[s]   shelp()           Shell help (print this help)
[s]   view(response)    View response in a browser

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

  • 當(dāng)shell載入后恃泪,將會(huì)得到一個(gè)包含response的數(shù)據(jù)的本地response變量郑兴,輸入response.body將輸出response的包體,輸出response.headers可以看到response的報(bào)頭贝乎。
  • 輸入response.selector時(shí)情连,將獲取到一個(gè)response初始化的類(lèi)Selector的對(duì)象,此時(shí)可以通過(guò)使用response.selector.xpath()response.selector.css()來(lái)對(duì)resposne進(jìn)行查詢(xún)览效。
  • Scrapy也提供了一些快捷方式却舀,例如response.xpath()response.css()同樣可以生效(如之前的案例)。

Selector選擇器

Scrapy Selector內(nèi)置XPath和CSS Selector表達(dá)式機(jī)制

Selector有四個(gè)基本的方法锤灿,最常用的還是xpath:

  • xpath():傳入xpath表達(dá)式挽拔,返回該表達(dá)式所對(duì)應(yīng)的所有節(jié)點(diǎn)的selector list列表
  • extract():序列化該節(jié)點(diǎn)為Unicode字符串并返回list
  • css():傳入CSS表達(dá)式,返回該表達(dá)式所對(duì)應(yīng)的所有節(jié)點(diǎn)的selector list列表但校,語(yǔ)法同BeautifulSoup4
  • re():傳入輸入的正則表達(dá)式對(duì)數(shù)據(jù)進(jìn)行提取螃诅,返回Unicode字符串list列表

XPath表達(dá)式的例子及對(duì)應(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舉例:

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

##打印列表中第一個(gè)元素,終端編碼格式顯示
print(response.xpath('//title'.extract()[0]))

response.xpath('//*[@class='even']')

以后做數(shù)據(jù)提取的時(shí)候状囱,可以先在Scrapy Shell中測(cè)試术裸,測(cè)試通過(guò)后再應(yīng)用到代碼中。當(dāng)然Scrapy Shell作用不僅僅如此浪箭,但是不屬于我們課程重點(diǎn)穗椅,不做詳細(xì)介紹。

參考:

  1. 官方文檔
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奶栖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子门坷,更是在濱河造成了極大的恐慌宣鄙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件默蚌,死亡現(xiàn)場(chǎng)離奇詭異冻晤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绸吸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)鼻弧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人锦茁,你說(shuō)我怎么就攤上這事攘轩≡魇蓿” “怎么了延窜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)定鸟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)笨篷,這世上最難降的妖魔是什么瞳秽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮率翅,結(jié)果婚禮上练俐,老公的妹妹穿的比我還像新娘。我一直安慰自己冕臭,他們只是感情好痰洒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著浴韭,像睡著了一般丘喻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上念颈,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天泉粉,我揣著相機(jī)與錄音,去河邊找鬼榴芳。 笑死嗡靡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窟感。 我是一名探鬼主播讨彼,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柿祈!你這毒婦竟也來(lái)了哈误?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躏嚎,失蹤者是張志新(化名)和其女友劉穎蜜自,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體卢佣,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡重荠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虚茶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戈鲁。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘹叫,靈堂內(nèi)的尸體忽然破棺而出婆殿,到底是詐尸還是另有隱情,我是刑警寧澤待笑,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布鸣皂,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寞缝。R本人自食惡果不足惜癌压,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荆陆。 院中可真熱鬧滩届,春花似錦、人聲如沸被啼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浓体。三九已至泡挺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間命浴,已是汗流浹背娄猫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留生闲,地道東北人媳溺。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碍讯,于是被迫代替她去往敵國(guó)和親悬蔽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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