選擇器

現(xiàn)在我們用 Scrapy 官方提供的測試網(wǎng)址:" http://doc.scrapy.org/en/latest/_static/selectors-sample1.html " 為例,看看選擇器的用法。

測試頁面 HTML 代碼如下:

<html>
 <head>
  <base  />
  <title>Example website</title>
 </head>
 <body>
  <div id='images'>
   <a href='image1.html'>Name: My image 1 <br />![](image1_thumb.jpg)</a>
   <a href='image2.html'>Name: My image 2 <br />![](image2_thumb.jpg)</a>
   <a href='image3.html'>Name: My image 3 <br />![](image3_thumb.jpg)</a>
   <a href='image4.html'>Name: My image 4 <br />![](image4_thumb.jpg)</a>
   <a href='image5.html'>Name: My image 5 <br />![](image5_thumb.jpg)</a>
  </div>
 </body>
</html>

使用 Shell 來測試:

scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html

·


·

1.extract()方法

把被提取的內(nèi)容轉(zhuǎn)換為文本率翅,輸出一個列表茅诱。

>>> response.xpath('//title/text()').extract()
['Example website']

>>> response.css('img').xpath('@src').extract()
['image1_thumb.jpg',
 'image2_thumb.jpg',
 'image3_thumb.jpg',
 'image4_thumb.jpg',
 'image5_thumb.jpg']

如果只想獲得被提取內(nèi)容的第一個鸯旁,可以使用 extract_first() 方法:

>>> response.css('img').xpath('@src').extract_first()
'image1_thumb.jpg'

判斷提取內(nèi)容內(nèi)容是否存在残家,用 is None泣港。

>>> response.xpath('//div[@id="not-exists"]/text()').extract_first() is None
True

當(dāng)提取內(nèi)容不存在時兽间,可以設(shè)定默認(rèn)值历葛。

>>> response.xpath('//div[@id="not-exists"]/text()').extract_first(default='not-found')
'not-found'

CSS 選擇器可以使用 CSS3 偽元素來提取內(nèi)容。

>>> response.css('title::text').extract()
['Example website']

>>> response.css('base::attr(href)').extract()
['http://example.com/']

>>> response.css('a[href*=image]::attr(href)').extract()
['image1.html', 
'image2.html', 
'image3.html', 
'image4.html', 
'image5.html']
2.嵌套選擇器

執(zhí)行選擇器方法后返回的選擇器對象嘀略,可以繼續(xù)對其使用選擇器方法恤溶。

>>> links = response.css('#images')
>>> links.css('a > img::attr(src)').extract()
['image1_thumb.jpg', 
'image2_thumb.jpg', 
'image3_thumb.jpg', 
'image4_thumb.jpg', 
'image5_thumb.jpg']
3.使用正則表達(dá)式

直接使用 re() 方法即可。

>>> response.xpath('//a[contains(@href, "image")]/text()').re(r'Name:\s*(.*)')
['My image 1 ', 
'My image 2 ', 
'My image 3 ', 
'My image 4 ', 
'My image 5 ']

extract_first() 方法類似帜羊,re_first() 返回用正則表達(dá)式提取的內(nèi)容的第一項(xiàng)咒程。

>>> response.xpath('//a[contains(@href, "image")]/text()').re_first(r'Name:\s*(.*)')
'My image 1 '
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市讼育,隨后出現(xiàn)的幾起案子帐姻,更是在濱河造成了極大的恐慌,老刑警劉巖奶段,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饥瓷,死亡現(xiàn)場離奇詭異,居然都是意外死亡痹籍,警方通過查閱死者的電腦和手機(jī)呢铆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹲缠,“玉大人棺克,你說我怎么就攤上這事悠垛。” “怎么了逆航?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵鼎文,是天一觀的道長。 經(jīng)常有香客問我因俐,道長拇惋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任抹剩,我火速辦了婚禮撑帖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澳眷。我一直安慰自己胡嘿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布钳踊。 她就那樣靜靜地躺著衷敌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拓瞪。 梳的紋絲不亂的頭發(fā)上缴罗,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音祭埂,去河邊找鬼面氓。 笑死,一個胖子當(dāng)著我的面吹牛蛆橡,可吹牛的內(nèi)容都是我干的舌界。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼泰演,長吁一口氣:“原來是場噩夢啊……” “哼呻拌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粥血,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柏锄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后复亏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趾娃,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年缔御,在試婚紗的時候發(fā)現(xiàn)自己被綠了抬闷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖笤成,靈堂內(nèi)的尸體忽然破棺而出评架,到底是詐尸還是另有隱情,我是刑警寧澤炕泳,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布纵诞,位于F島的核電站,受9級特大地震影響培遵,放射性物質(zhì)發(fā)生泄漏浙芙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一籽腕、第九天 我趴在偏房一處隱蔽的房頂上張望嗡呼。 院中可真熱鬧,春花似錦皇耗、人聲如沸南窗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽万伤。三九已至,卻和暖如春呜袁,著一層夾襖步出監(jiān)牢的瞬間壕翩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工傅寡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人北救。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓荐操,卻偏偏與公主長得像,于是被迫代替她去往敵國和親珍策。 傳聞我的和親對象是個殘疾皇子托启,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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

  • 當(dāng)我們?nèi)〉昧司W(wǎng)頁的response之后,最關(guān)鍵的就是如何從繁雜的網(wǎng)頁中把我們需要的數(shù)據(jù)提取出來攘宙,python從網(wǎng)頁...
    cnkai閱讀 471評論 0 1
  • 有條件的請支持慕課實(shí)戰(zhàn)正版課程屯耸,本blog僅僅是歸納總結(jié),自用蹭劈。 一疗绣、xpath部分 1.1 xpath簡介 1....
    youyuge閱讀 23,897評論 1 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)铺韧,斷路器多矮,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 一直都在尋找一個這樣可以自己寫點(diǎn)東西,讀讀他人的文章,又可以三人安心舒服的世界塔逃,可以讓人放松一下讯壶,溜出繁雜混亂的世...
    希言吖閱讀 237評論 0 0
  • 親,你會“調(diào)情”嗎匀借?你能“變態(tài)”嗎颜阐? 對,就要你“調(diào)情”吓肋,就要你“變態(tài)”凳怨! 只不過這“調(diào)情”,是指調(diào)節(jié)情緒是鬼;這“變...
    西瓜甜甜啦閱讀 1,421評論 7 28