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

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

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

Author24 — интернет-сервис помощи студентам
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2017, 00:02
Ответы с готовыми решениями:

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

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

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

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

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

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

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
25.10.2017, 09:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2017, 09:39
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru