Nokogiri如何获取img src

Nokogiri how to get the img src

我一直试图在此循环中获取图像的 "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="">

检查每个元素内的 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

因为你想要做的是得到一个数组,其中包含与 '#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", ...]