2017-04-03 6 views
0

나는이 루프에서 이미지의 "SRC"속성을 얻기 위해 노력했지만 그것은 아무것도 반환하지 왜 알아낼 수 없습니다 :노코 기리 지정한 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입니다 : 모든 요소 내부의 src 속성에 대한

<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

확인,이 방법 :

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 속성 배열, 당신은 each 대신 map를 사용할 수 있습니다

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

최고, 감사합니다! 이미지를 배열로 저장하려고합니다. 그래서 뷰에 표시 할 수 있습니다. 올바른 방향으로 나를 가리킬 수 있습니까? @label = []을 저장하려고 시도했지만 그 배열을 저장할 위치와 컨트롤러를 조작하는 방법을 잘 모릅니다. 다시 한 번 감사드립니다. – Rslow

+0

답변을 편집하고 추가하겠습니다. –

+0

그래서 @label = [] @ label.css ('# boutiqueList img')와 같은 것을 레이아웃 할 수 있습니다. p l.attr ('src')} 그리고 그 배열을 @label에 저장하겠습니까? 나는 그것을 컨트롤러에 넣었다. – Rslow