У меня есть скрипт, который сбрасывает страницы HTML-статьи в интернет-магазине. Я тестирую набор из 22 страниц, из которых 5 страниц статей содержат описание продукта, а другие - нет.Веб-скребок с помощью Nokogiri :: HTML и Ruby - вывод на CSV-вопрос
Этот код помещает правильную информацию на экране:
if doc.at_css('.product_description')
doc.css('div > .product_description > p').each do |description|
puts description
end
else
puts "no description"
end
Но теперь я застрял на том, как получить это правильно выводить найденные описания продукта в массив, откуда я пишу их к CSV-файл.
Пробовал несколько вариантов, но пока никто из них не работает. Если я заменил puts description
на @description << description.content
, то все описания статей попадают в верхние строки в CSV, хотя они не принадлежат к статьям в этой строке.
Когда я также заменю «нет описания» для @description = "no description"
, тогда первые 14 строк в моем CSV получат 1 букву «без описания» каждый. Выглядит забавно, но это не совсем то, что мне нужно.
Если требуется больше кода, просто кричите!
Это код CSV я использую в скрипте:
CSV.open("artinfo.csv", "wb") do |row|
row << ["category", "sub-category", "sub-sub-category", "price", "serial number", "title", "description"]
([email protected] - 1).each do |index|
row << [
@categories[index],
@subcategories[index],
@subsubcategories[index],
@prices[index],
@serial_numbers[index],
@title[index],
@description[index]]
end
end
Можете ли вы показать нам свой CSV-код? – gmaliar
Часть путаницы вызывает ваш CSV-объект 'row' – pguardiario
Не понимаю, другие данные корректно отображаются в файле csv ... только описание действует weird – user2215918