2017-04-03 68 views
0

我一直在試圖獲取圖像的「src」屬性在此循環,但想不通爲什麼它不返回任何東西:引入nokogiri如何獲得IMG SRC

require 'nokogiri' 
require 'open-uri' 

url = "https://marketplace.asos.com/boutiques/independent-label" 

doc = Nokogiri::HTML(open(url)) 

label = doc.css('#boutiqueList') 
label.css('#boutiqueList img').attr('src').each do |l| 
    p l 
end 

這是HTML:

<ul class="itemList boutiques" id="boutiqueList"> 

     <li class=""> 


<div class="item landscapemedium" rel="sisterhood"> 
    <div class="image"> 
     <a href="/boutique/sisterhood" class="view-collection">  
     <img alt="" src="https://marketplace-images.asos.com/2016/12/23/0d664728-f484-447d-b927-679f55f24c1a_medium.jpg" class=""> 

回答

1

檢查每一個元素中的src屬性,這種方式:

label.css('#boutiqueList img').each { |l| p l.attr('src') } 
"https://marketplace-images.asos.com/2016/12/23/0d664728-f484-447d-b927-679f55f24c1a_medium.jpg" 
"https://marketplace-images.asos.com/2017/02/03/f6322297-4400-4f18-b76e-66eedfc3f620_medium.jpg" 
"https://marketplace-images.asos.com/2016/10/12/2d556841-7c0c-436a-a6fd-37b333c04cfe_medium.jpg" 
... 
=> 0 

當你想要做的是到g等與'#boutiqueList img'匹配所有src屬性的數組,那麼你可以使用map代替each

label.css('#boutiqueList img').map { |l| p l.attr('src') } 
=> ["https://marketplace-images.asos.com/2016/12/23/0d664728-f484-447d-b927-679f55f24c1a_medium.jpg", ...] 
+0

真棒,謝謝!我正在尋找將圖像作爲數組存儲,所以我可以使用它們將它們顯示在視圖中,您是否能夠將我指向正確的方向。我試過保存@標籤= [],但我不知道在哪裏存儲該數組,然後如何在控制器中操作?再次感謝 – Rslow

+0

我會編輯答案並補充說明。 –

+0

所以我會把它放在@label = [] @ label.css('#boutiqueList img')。 p.attr('src')}並且將數組存儲在@label中?然後我把它放在控制器中?對不起,還有一個新的 – Rslow