Парсинг характеристик товаров

ArtemAMA

Client
Регистрация
13.12.2016
Сообщения
13
Благодарностей
2
Баллы
3
Вопрос в правильности направления движения - (для новичка, т.е. просьба подробно, понятно, для нуба)

задача - с интернет магазина спарсить товары с характеристиками и разложить эти характеристики в файл xls или csv

1 захожу в каталог товара нужной категории, паршу ссылки на товары через регулярные выражения, по блоку "клик" перехожу на следующую страницу, и повторяю пока есть страницы, после удаляю дубли из списка ссылок

2 переходим по первой ссылке из списка
- и вот тут вопросы: как лучше спарсить характеристики в файл xls или csv
а- проблема что характеристики как повторяются, так и отличаются от карточки к корточке
б- как сделать, чтобы искать в заголовке файла характеристику имеется или нет, и если да, то в этот столбец добавлялось значение, если нет, то добавлять в заголовок новую характеристику в следующий столбец
/или может есть варианты как сделать все эти действия проще?/
если можно распишите как


может есть смысл сделать типа инструкцию на парсинг на форуме....
 
  • Спасибо
Реакции: CHADREX

copper12

Client
Регистрация
26.11.2016
Сообщения
1 111
Благодарностей
260
Баллы
63

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Берите каждое значение в свою переменную и просто записывайте все переменные в таблицу.
Таким образом получится, что все характеристики будут раскиданы по правильным ячейкам.
Тех значений, которых не будет, просто запишутся пустыми.
 
  • Спасибо
Реакции: ArtemAMA

ArtemAMA

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

т.е. 1 парсим характеристики, закидываем из в список
2 чтобы зенка сама из списка характеристик создала переменные,
3 и на автомате добавить эти переменные в таблицу

/или может это я уже загнул...? и так не получится....
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113

ArtemAMA

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

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Можно реализовать динамически, не используя знаний о наименовании характеристик.
Во первых попробуйте для начала все адреса товаров найти в сайтмапе - это сильно упростит шаблон.
Во вторых парсите название характеристики и значение как пару и задайте там какой нибудь разделитель типа точки с запятой или что подойдет.
Потом для каждого товара у вас будет просто список, который можно записать или в файл, или сразу обрабатывать в шарпе, если у вас есть навыки
Дальше вы берете все эти файлы и изо всех них берете только названия характеристик - составляете самую длиную цепочку уникальных характеристик и сортируете её. получается новый список.
Теперь нужно записать этот список всех уникальных характеристик в первую строку и дальше для каждого товарного файла в цикле обходить его и если в нем есть подходящая характеристика писать её значение. Если нет то писать NA
Ну и в итоге у вас будет искомая таблица, которую нужно просто сохранить в эксель
 
  • Спасибо
Реакции: CHADREX и ArtemAMA

ArtemAMA

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

для каждого товарного файла в цикле обходить его и если в нем есть подходящая характеристика писать её значение
в цикле обходить его и если в нем есть подходящая характеристика
разъясните пожалуйста как лучше реализовать эту функцию
как-то через логику? и переменные?
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
ну я щас больше на питоне чем на зенке
но добавить в таблицу это объеденить список через скажем ; и записать в таблицу строку
ну и держим этот список под таинственным именем №1

а по логике - читаем список файлов
для каждого файла
читаем файл в список скажем №2
дальше для каждого элемента из списка 1 смотрим вхождение подстроки в элементы списка 2
если элемент найден - сплитаем нужную строку из второго списка и вторая часть - нужное нам значение, которое мы пишем в строчку результата через разделитель
если не найден - пишем в строчку результата NA так же через разделитель

строчку результата добавляем в таблицу
 
  • Спасибо
Реакции: CHADREX и ArtemAMA

seomr

Client
Регистрация
31.05.2011
Сообщения
103
Благодарностей
5
Баллы
18
Тоже очень интересен данный вопрос. Так как постоянно сталкиваюсь с необходимостью парсинга ИМ. В Content Downloader эта тема реализована в виде макроса DYNAMICVALUES. Но хотелось бы нечто подобное на зенке, так как CD пробивает далеко не все ресурсы, а зенка может пробить практически все. Но приходится изобретать велосипед.
Может кто-то нашел какой-то более простой способ парсинга не константных характеристик интернет магазинов?
 

bad robot

Client
Регистрация
07.03.2011
Сообщения
197
Благодарностей
50
Баллы
28
Присоединяюсь, есть ли способ? Неверняка, если не зенкой, то имеется какой-нибудь сниппет.
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
456
Баллы
63
Можно более менее универсальный составить запрос на парсинг характеристик в определенном магазине
и складывать их к примеру в json формате в реляционную базу банных или в mongodb в виде обьектов.
А затем вторым проектом вытаскивать из базы нужные значения и записывать в файл таблицы.
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
Очень часто бывают динамические характеристики, то есть у одного товара есть какая то опция, у другого нет, но они находятся в одной категории и тогда на помощь приходит "ассоциативный массив", где key: имя зарактеристики; value: значение харрактеристики.

В цикле формируется строка заголовков, которая в последующем сравнивается и поставляются значения, по их местам.

Подробнее: http://www.codenet.ru/progr/cpp/dynamic-arrays-c-sharp.php
 

sten30

Client
Регистрация
05.09.2017
Сообщения
247
Благодарностей
30
Баллы
28
Тоже очень интересен данный вопрос. Так как постоянно сталкиваюсь с необходимостью парсинга ИМ. В Content Downloader эта тема реализована в виде макроса DYNAMICVALUES. Но хотелось бы нечто подобное на зенке, так как CD пробивает далеко не все ресурсы, а зенка может пробить практически все. Но приходится изобретать велосипед.
Может кто-то нашел какой-то более простой способ парсинга не константных характеристик интернет магазинов?
Прилагаю шаблон парсинга характеристик товаров интернет-магазина в столбцы таблицы на Zennoposter.
В отличии от DYNAMICVALUES создание заголовков свойств и запись значений свойств происходит не в конце парсинга, а в момент создания строки товара.
Реализация довольно простая на кубиках Zennoposter, на C# только получение номера строки списка Индексы заголовков.
Имеем два списка Свойства2 (список характеристик) и Индексы заголовков (все заголовки таблицы).
Работаем в цикле со списком характеристик, каждый цикл получаем строку заголовков таблицы в список Индексы заголовков. Узнаем номер столбца свойства из списка Индексы заголовков и записываем значение свойства в нужный столбец. Если свойства нет в списке Индексы заголовков - создаем новый заголовок в таблице.
 

Вложения

  • Спасибо
Реакции: seomr и djaga

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