Parsing on Ruby..что-то идет не так, хотя вроде корректно прописал логику. #url = 'https://www.petsonic.com/snacks-huesos-para-perros/'

equire 'csv' require 'curb' require 'open-uri' require 'nokogiri' require 'pry'

url = ARGV.first result = ARGV.last

парсим по категориям их 8

all_product_page = Nokogiri::HTML(Curl.get(url).body).xpath('//ul[contains(@class, "subcate_grid_view")]/li/a').map { |a| a['href'] }

открываем файл csv и указываем обозначения столбцов

CSV.open(result, "wb") do |note_line| note_line << ['Название товара', 'Цена товара', 'Изображение товара']

парсим каждую категорию

all_product_page.each do |product_url|

product_page_url = Nokogiri::HTML(Curl.get(product_url).body)

# получаем урл каждого товара из категории
product_name = product_page_url.xpath('.//a[@class="product-name"]/@href')

# парсим каждый урл товара
product_name.each do |every_product_url|

  every_product_name = Nokogiri::HTML(Curl.get(every_product_url).body)

  # название продукта

  product_name_1 = every_product_name.css('div.product_main_name').css('h1 > text()').to_s
 
  # изображение продукта

  product_img_1 = every_product_name.css('span#view_full_size').css('img#bigpic').at('img')['src']
  
  #  парсим варианты веса товара
  attribute_product_list = every_product_name.css('fieldset.attribute_fieldset').css('ul.attribute_lists')

  # проходим по каждому весу
  attribute_product_list.each do |attr|
    # вес продукта
    product_pre_packing = attr.xpath('//span[@class="radio_label"]').text

    # цена продукта для данного весв
    product_price = attr.xpath('//span[@class="price_comb"]')

    # собираем все
    full_info = ["#{product_name} - #{product_pre_packing}", product_price, product_img_1]

    # пишем собранные данные в наш файл
    note_line << full_info

  end
end

end end


Ответы (0 шт):