Можно ли парсить данные с сайта сразу в таблицу csv

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Добрый день!
Собственно вопрос, можно ли парсить данные с сайта сразу в таблицу csv?
С тем как парсить нужную информацию разобрался, но получается ее собирать только в списки. А хотелось бы парсить данные сразу в таблицу с разделением по столбцам. Или хотя бы из списков импортировать данные в столбцы таблицы, возможное ли такое в данной программе, если возможно может ли кто подсказать как реализовать?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Прочитал несколько раз, не все же так и не понял как в одной таблице сохранить по столбцам все что с парсерено.
Чтобы из файлов все раскидать по таблице, не могу найти функции загрузки информации сразу из нескольких файлов с присвоением каждому файлу своего столбца.
А для того чтобы напрямую парсить в таблицу, не смог найти функцию где можно выбрать столбец в который будет парсится информация и куда вводить сам текст регулярного выражения с помощью которого парсится информация.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
Прямого функционала нет, чтобы отдельный файл закидывать в отдельный столбец, но если поиграться можно добиться желаемого. Например объединить все файлы в один, в них добавить свой разделитель столбца. При загрузке объединенного файла в таблицу выбрать свой разделитель.
А вообще лучше парсить данные сразу в таблицу, а не в список. Для таблиц есть операции Добавить строку или Добавить ячейку (с указанием столбца).
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Скажем так. Таблица это список с уникальными разделителями.
Строка от строки разделяется переносом грубо говоря.
А столбец от столбца разделителем. Например ";".
Так вот вы подготавливаете сначала данные которые пойдут в каждый столбец, и потом записываете всю строку с разделителями в таблицу.
{значение в столбец "A"};{значение в столбец "B"};{значение в столбец "C"};{значение в столбец "D"}
Главное потом таблицу открыть, указав нужный разделитель.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Танцы с бубнами не нужны тут. Просто выстройте архитектуру парсинга грамотно и заносите данные одной строкой.
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Что то далеко уйти не получается, максимум до чего дошел это http://prntscr.com/80ro8x
Вы говорите что можно парсинг делать одной строкой, а не подскажите как можно несколько регулярных выражений отделить друг от друга чтобы результат их работы выводился в текстовый файл в виде "ссылка название артикул цена"

Привожу регулярные выражения которые составил для парсинга:
(?<=<noindex><a\ href=").*(?="\ title) (?<=alt=").*(?="></a>) ссылка
(?<=alt=").*(?="></a>) название
(?<=<b>Артикул:\ </b>).*(?=&nbsp;&nbsp;&nbsp;-) артикул
(?<=\ \ \ \ \ \ \ \ \ \ \ \ <span>).*(?=\.-</span>) цена
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 469
Благодарностей
8 691
Баллы
113
Что то далеко уйти не получается, максимум до чего дошел это http://prntscr.com/80ro8x
Вы говорите что можно парсинг делать одной строкой, а не подскажите как можно несколько регулярных выражений отделить друг от друга чтобы результат их работы выводился в текстовый файл в виде "ссылка название артикул цена"

Привожу регулярные выражения которые составил для парсинга:
(?<=<noindex><a\ href=").*(?="\ title) (?<=alt=").*(?="></a>) ссылка
(?<=alt=").*(?="></a>) название
(?<=<b>Артикул:\ </b>).*(?=&nbsp;&nbsp;&nbsp;-) артикул
(?<=\ \ \ \ \ \ \ \ \ \ \ \ <span>).*(?=\.-</span>) цена
каждой регуляркой отдельно парсите данные, в своем экшене..
и потом переменные с разделителем записываете строкой в файл name.csv..
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
Что то далеко уйти не получается, максимум до чего дошел это http://prntscr.com/80ro8x
Вы говорите что можно парсинг делать одной строкой, а не подскажите как можно несколько регулярных выражений отделить друг от друга чтобы результат их работы выводился в текстовый файл в виде "ссылка название артикул цена"

Привожу регулярные выражения которые составил для парсинга:
(?<=<noindex><a\ href=").*(?="\ title) (?<=alt=").*(?="></a>) ссылка
(?<=alt=").*(?="></a>) название
(?<=<b>Артикул:\ </b>).*(?=&nbsp;&nbsp;&nbsp;-) артикул
(?<=\ \ \ \ \ \ \ \ \ \ \ \ <span>).*(?=\.-</span>) цена
Результат парсинга каждой регулярки нужно складывать в соотв. переменную, например, Variable.link, Variable.price и т.д.
А затем добавлять в таблицу такой строкой - Variable.link; Variable.name;Variable.price;
В качестве разделителя столбцов выбрать ;
Так при парсинге все ляжет по столбцам.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Вам либо парсить по одному совпадению и потом увеливая счетчик пока не спарсите всю страницу.
ссылк1;название1;артикул1;цена1

потом увеливаете номер совпадения в регулярках при помощи увеличения счетчика и парсите уже
ссылка2;название2;артикул2;цена2

или же у полученных списков берете поочередно по строке с каждого списка, и уже записываете в таблицу через разделитель.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 469
Благодарностей
8 691
Баллы
113
если в файлах-списках данные расположены в правильном порядке, то просто с удалением из каждого списка берете первую строку, записываете в соотв. переменную, а переменные через разделитель записываете в вых. список и так в цикле пока строки в файлах не закончатся.. счетчики не нужны..

а так - да, изначально нужно было с сайта прямо сразу формировать CSV-файл..
 
Последнее редактирование:

mrstorm

Client
Регистрация
16.04.2015
Сообщения
205
Благодарностей
14
Баллы
18
можно еще сделать так, что с начало все спарсить в списки, а потом определив длинну списков сделать цикл, открывать каждый список по номеру и сохранять в нужно последовательность в файл через разделитель.
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Добрый всем день и спасибо большое всем за ответы, пока пробую по ним проводить различные танцы с бубном.
Возник вопрос, что дает функция отмеченная красными стрелочками http://prntscr.com/810tba
 

mrstorm

Client
Регистрация
16.04.2015
Сообщения
205
Благодарностей
14
Баллы
18

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
это я понимаю, я думал что если туда ввести регулярное выражение он будет сохранять результаты его работы в отдельные столбцы и/или строки, но такого не происходит, а что оно позволяет там сделать?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 469
Благодарностей
8 691
Баллы
113
это я понимаю, я думал что если туда ввести регулярное выражение он будет сохранять результаты его работы в отдельные столбцы и/или строки, но такого не происходит, а что оно позволяет там сделать?
это если разделители не одного типа, можно по регулярке отслеживать несколько типов разделителей..
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
это я понимаю, я думал что если туда ввести регулярное выражение он будет сохранять результаты его работы в отдельные столбцы и/или строки, но такого не происходит, а что оно позволяет там сделать?
Это выбор разделителя. Свой разделитель можно указать как текст или как регулярное выражение. Например, регулярное выражение \s - означает, что в качестве разделителя в таблице будет пробел.
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
В итоге толком не вышел к тому чтоб в таблицу нормально заносить данные. Только вариант выгрузить список каждых значений в отдельный файл, а потом уже руками объединять в экселе через экспорт данных.
Странно как то получается, вроде такую простую функцию выполнить надо, а реализация очень неудобная.
По крайней мере для меня, человека далекого от программирования.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 469
Благодарностей
8 691
Баллы
113
В итоге толком не вышел к тому чтоб в таблицу нормально заносить данные. Только вариант выгрузить список каждых значений в отдельный файл, а потом уже руками объединять в экселе через экспорт данных.
Странно как то получается, вроде такую простую функцию выполнить надо, а реализация очень неудобная.
По крайней мере для меня, человека далекого от программирования.
реализацию вам подсказывали уже, ничего сложного..
у вас есть несколько регулярных выражений, вы ими парсите информацию с сайта, заносите их в отдельные списки-файлы, вот на последнем шаге как раз, нужно не в разные файлы заносить информацию, а в один-единственный - экшеном Операции над списком вы добавляете строку из ваших всех переменных (в нужной последовательности), разделенных знаком ; (точка с запятой)..
на выходе получаете файл в формате CSV, единственно что - возможно потребуется переконвертирование файла из UTF-8 в WINDOWS-1251 (ANSI), чтобы содержимое кириллицы нормально отображалось в Excel..
 
  • Спасибо
Реакции: greenvipe и VladZen

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
реализацию вам подсказывали уже, ничего сложного..
у вас есть несколько регулярных выражений, вы ими парсите информацию с сайта, заносите их в отдельные списки-файлы, вот на последнем шаге как раз, нужно не в разные файлы заносить информацию, а в один-единственный - экшеном Операции над списком вы добавляете строку из ваших всех переменных (в нужной последовательности), разделенных знаком ; (точка с запятой)..
на выходе получаете файл в формате CSV, единственно что - возможно потребуется переконвертирование файла из UTF-8 в WINDOWS-1251 (ANSI), чтобы содержимое кириллицы нормально отображалось в Excel..
Тоже самое объяснял... Ничего сложного тут нет, никакого программирования не требуется.
Результат парсинга каждой регулярки нужно складывать в соотв. переменную, например, Variable.link, Variable.price и т.д.
А затем добавлять в таблицу такой строкой - Variable.link; Variable.name;Variable.price;
В качестве разделителя столбцов выбрать ;
Так при парсинге все ляжет по столбцам.
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
в один файл тоже пробовал записывать, и перед записью в список добавлять строку с разделителем ; но он мне все равно все данные в один столбец закидывает вот как выглядит http://prntscr.com/81hanm
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
А может кто выложить пример как должен выглядеть текст в файле чтобы он разбивался по столбцам и строкам?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
в один файл тоже пробовал записывать, и перед записью в список добавлять строку с разделителем ; но он мне все равно все данные в один столбец закидывает вот как выглядит http://prntscr.com/81hanm
Почему разделитель в начало, а не в конец списка добавляется?
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
пробовал и в начало и в конец, результат один, в таблице создается второй столбец с пустыми ячейками, только в одном варианте сделал в таблице данные в разных столбцах, если они хранятся в виде:
http://prntscr.com/81hrvd
т.е если данные записаны в одной строке через разделитель то они уже будут раскидыватся по столбцам как надо, и вроде этот вариант мне бы отлично подошел, но никак не могу понять как сделать так чтобы несколько регулярный выражений выполнялись одной строчкой кода, и между результатом их работы ставился знак ;
 

yourmind

Client
Регистрация
13.09.2010
Сообщения
245
Благодарностей
21
Баллы
18

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
пробовал и в начало и в конец, результат один, в таблице создается второй столбец с пустыми ячейками, только в одном варианте сделал в таблице данные в разных столбцах, если они хранятся в виде:
http://prntscr.com/81hrvd
т.е если данные записаны в одной строке через разделитель то они уже будут раскидыватся по столбцам как надо, и вроде этот вариант мне бы отлично подошел, но никак не могу понять как сделать так чтобы несколько регулярный выражений выполнялись одной строчкой кода, и между результатом их работы ставился знак ;
Сделал примерный шаблон, перегоняющий данные из нескольких списков в одну таблицу. Вы можете сделать по аналогии.
 

Вложения

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Спасибо большое!!! Шаблон очень помог, как до конца доделаю парсер выложу в виде шаблона, может тоже кому поможет.
 
  • Спасибо
Реакции: VladZen

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Как и обещал выкладываю парсер, правда немного функционал не такой какой хотелось бы, переходит по страницам вплоть до сотни (ограничения счетчика), сделать так чтобы переходил только по страницам которые есть по факту так и не смог. Кому нужно подогнать под нужный сайт и переделать функционал думаю будет не сложно. Если есть чем дополнить, всегда рад предложениям.
 

Вложения

  • 89,5 КБ Просмотры: 433
  • Спасибо
Реакции: VladZen

ArtemAMA

Client
Регистрация
13.12.2016
Сообщения
13
Благодарностей
2
Баллы
3
сделать так чтобы переходил только по страницам которые есть по факту так и не смог
полагаю врядли актуально, но вдруг кому пригодится...

перед тем как ходить по страничкам сайта их (странички можно спарсить в список)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)