以下代码:
product.css('.simImage').each do | product |
product_image_url = product.xpath('.//a/img/@src').to_s
product_hash[:product_image_url] ||= []
product_hash[:product_image_url] << { :image_url => product_image_url }
end
产生这样的东西:
[{:image_url=>"41g2nv06iwl._sl500_ss120_.jpg"},{:image_url=>"511vczsu4pl.sl500_ss120_.jpg"}等]
这个代码:
product.css('.simProductInfo').each do | product |
product_asin = product.xpath('.//a/@href').first.value[/(?<=/)[A-Zd]{5,}/]
product_hash[:product_asin] ||= []
product_hash[:product_asin] << { :asin => product_asin }
end
产生这样的东西:
[{:asin=>"0744014476"、}、{:asin=>"B000ZKA0J6"}等]
我有很多这样的方法。但它们都会废弃产品的元素,并将它们放在不同的散列/符号中。我该怎么做才能和他们一起制作这样的东西?
[{:asin=>"0744014476",:image_url=>"41g2nv06iwl._sl500_ss120_.jpg"等},{:asin=>"B000ZKA0J6",:image_url=>"511vczsu4pl_sl500_ss120_jpg"等}等]
并将该散列数组存储在CCD_ 1中?
这应该对您有效。
product_hash[:product_image_url].zip(product_hash[:product_asin]).map {|arr| arr[0].merge(arr[1]) }
如果你有更多的阵列,比如a1, a2, a3
,那么你可以进行
a1.zip(a2, a3).map {|arr| arr.reduce :merge }