Форум программистов, компьютерный форум, киберфорум
Ruby
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 5

Запись в CSV-файл из массива. Не является форматом csv!

25.10.2017, 00:02. Показов 3589. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл. Всё написал, сбросил, пришёл ответ что у меня формат файла не csv. Что я сделал не так? Уже перерыл кучу статей и перепробовал разные варианты, всё равно не работает... Вот последний вариант:

Rails
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
require 'open-uri'
require 'nokogiri'
require 'csv'
 
puts 'Введите ссылку категории'
url = gets.chomp.to_s
puts 'Введите имя файла'
file_name = gets.chomp.to_s + '.csv'
url_p = '?p='
page = Nokogiri::HTML(open(url + url_p + '1'))
last_page_number = page.xpath("//*[@id='pagination_bottom']/ul/li/a/span").last.text.strip.to_i
 
for pg_number in 1..last_page_number do
puts "Считывание страницы #{pg_number}"
page_c = Nokogiri::HTML(open(url+url_p+pg_number.to_s))
last_link_product = page_c.xpath("//a[@class='product-name']/@href").size
 
     for link in 0..last_link_product-1 do
         link_product = page_c.xpath("//a[@class='product-name']/@href")[link].to_s
         page_p = Nokogiri::HTML(open(link_product))
         number_el_product = page_p.xpath(".//ul[@class='attribute_labels_lists']/li").size
         name_product = page_p.xpath(".//div[@class='product-name']/h1[@itemprop='name']/text()").text.strip
         image_link = page_p.xpath(".//*[@id='bigpic']/@src").text.strip.to_s
         products = [] 
         if (number_el_product > 0)  
           for number in 0..number_el_product-1 do
             product_mass = page_p.xpath(".//ul[@class='attribute_labels_lists']/li/span[@class='attribute_name']")[number].text.strip
             product_price = page_p.xpath(".//ul[@class='attribute_labels_lists']/li/span[@class='attribute_price']")[number].text.strip
             product_name = ''+name_product+' - '+product_mass+''
             products.push(
                Name: product_name,
                Price: product_price,
                Image: image_link, 
             )
           end
         else 
             product_price = page_p.xpath(".//*[@id='our_price_display']").text.strip
             product_name = "#{name_product}"
             products.push(
                Name: product_name,
                Price: product_price,
                Image: image_link,
             )
         end 
          CSV.open(file_name, 'a') do |csv|
          products.each do |item|
          csv << item.values      
     end
     end    
     end
puts 'Завершено'   
end
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2017, 00:02
Ответы с готовыми решениями:

Запись данных из массива в файл *.csv
В процессе доработки макроса, вытягивающего из страницы excel номера телефонов столкнулся с проблемой. Все работает как задумывалось, в...

запись в csv файл
Добрый день,пытаюсь записать в csv файл таблицу mysql ,однако в файл попадает также весь html код страницы с которой выполняется код,в чём...

Запись в csv файл
Считываю Лист объектов, делаю проверку по ключевому слову и нужно записать найденное в новый файл. Пыталась сделать через streamwriter,...

1
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 5
25.10.2017, 09:39  [ТС]
Разобрался.

Когда записываем в файл разделяем записи в строке с помощью " ; " для правильного заполнения, тогда вывод показывает в правильном формате. Вот структура массива чтобы было более понятно:

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
products.push(
                Name: product_name,
                Price: product_price,
                Image: image_link,
             )
...
...
...
 
File.open(file_name, 'a') do |csv|
          products.each do |item|
          csv << "#{item[:Name]};#{item[:Price]};#{item[:Image]}\n"     
     end
     end
Миниатюры
Запись в CSV-файл из массива. Не является форматом csv!  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2017, 09:39
Помогаю со студенческими работами здесь

Запись в csv файл
Как сделать так чтобы результаты выполнения программы записывались в csv файл?

Запись данных в .CSV файл
Здравствуйте, столкнулся с глупой проблемой, но не смог нагуглить решение. Вводные: есть два одномерных массива чисел, надо их записать в...

Запись в файл csv (fputcsv)
Здравствуйте! 1) Мне надо записать данные в файл csv но у меня все пишет в одну ячейку а надо что бы каждый елемент в отдельную. ...

Запись, дозапись из Datagridview в файл csv
Всем привет! НА форме есть DateTimePicker, кнопка и datagridview колонки datagrid дата; время; адрес Пользователь набивает данные в...

Запись данных в csv файл по приходу в COM порт
Уже поднимал подобный вопрос, перерыл много информации, но так и не нашел ответа. Необходимо записывать данные в csv файл. Сначала хотел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru