Jump to content

Recommended Posts

4 часа назад, Nomandvs сказал:

Аплодирую =)

За одну только вкладку прямого парсинга в ИМ готов купить две копии. 

Бери сразу 10, потом загонишь кому нить))) Чувствую, Канары по тебе плачут.

 

Буду за Вами.

Edited by pomansur
  • +1 1

Share this post


Link to post
Share on other sites

@Nomandvs @pomansur

тогда я буду за вами :)

Сегодня произошла накладочка с инструкцией, поэтому выкладываю сырые описания новых страниц здесь и ухожу спать.
Как проснусь сделаю последние приготовления и выложу вторую версию. 
Постоянно нахожу мелочи которые хочется доработать, и новые функции. Не могу остановится. Так что держите предвкушение !

  • +1 1

Share this post


Link to post
Share on other sites

Парсинг в ИМ
 

Ну вот вы и дошли до самого сложного интересного. Заварите чай и начнем знакомится с данной вкладкой. 
Эта вкладка наверное самая сложная для описания всех возможных вариантов настроек. Честно говоря я сам до конца не знаю все варианты событий которые можно сделать при помощи этих настроек. Это может звучит глупо, но это правда. 
Суть в том что я потратил много времени на записывание и реализацию всех возможных вариантов парсинга, и пришел к выводу что луче создать много маленьких инструментов которые в последствии можно будет между собой смешивать. Больше 60% всех задумок я отказался реализовывать в начальной версии 2.0 сильно много времени уходит. Но я их реализую постепенно. 

Знакомство с интерфейсом. 

pr_im1.thumb.png.350f4a695d0fd604008d9055ae781020.png

1. Действие
Вы можете выбрать три типа действий которые будет выполнятся. 
а) Добавление нового товара.

б) Обновление товара

в) Добавление и Обновление товара.

2. Идентификатор товара
Вы можете выбрать в качестве идентификатора товара один из трех вариантов.
а) Код товара (он же model)
б) Артикул (поле sku)
в) Название (Поле name) Обратите внимание что использование имени товара в качестве идентификатора не рекомендуется, может привести к появлению дублей товара, или обновлению не того товара что вам нужно. Имя является не уникальным значением. 
Это поле будет использоваться для определения товара в магазине.

Допустим вы выбрали идентификатором Артикул (sku)  и выбрали действие добавлять товар, если товар с таким артикулом уже есть в магазине модуль его не добавит. 
Если товара с таким артикулом нету в магазине, тогда модуль создаст это товар. 
То же самое касается действия обновить. Если есть то товар обновится, если нет тогда модуль пропустит данный товар.
Что касаемо действия Добавлять и обновлять, все аналогично. Только если товара нет он создастся если есть обновится. 

3. Пауза 
Вы можете указать любую цифру от нуля. и до .... 
0 - Это значит что при парсинге паузы не будет. Но если вы укажите к примеру 3 - тогда после парсинга одной ссылки модуль будет замирать на 3 секунды. По истечению 3 секунд приступать к парсингу следующей ссылки.
Это необходимо что бы создать видимость что вы обычный пользователь который смотрит сайт. Много сайтов могут банить вас за аномальную активность, и это функция первый шаг в сторону обхода блокировок. 

 

4. Вывод количество ссылок
В данном поле вы можете видеть сколько ссылок на парсинг у вас есть, и сколько ссылок спарсено.
Ссылок в очереди: 150 - Количество не обработанных ссылок. 
Обработано ссылок: 0 - Количество спарсенных ссылок. 
В данном примере можно видеть что еше не запускался парсинг, и обработанных ссылок 0

5. Кнопка Пред просмотр. 
При нажатии на кнопку пред просмотр вы будете перенаправлены на страницы пред просмотра товара. Полезная страница что бы проверить свои настройки, и произвести корректировки. 

6. Кнопка Поиск замена
При нажатии вы будете перенаправлены на страницу настроек поиск замена.

 

7. Кнопка Перезагрузить ссылки. 

При нажатии данной кнопки все ссылки которые были уже спарсены, и находятся в красном списке Обработано ссылок будут снова добавлены в список Ссылки в очереди. Это необходимо для того что бы произвести повторно действие по всем собранным ссылкам. Допустим для ежедневного обновления информации в вашем магазине.

8. Блок с данными.
В данном блоке представлены все данные с которыми работает модуль. На данный момент.
Обратите внимание здесь нету поля опции, потому что в версии 2.0 модуль не умеет работать с опциями. Данный функционал уже разрабатывается. 

 

9. Блок настроек.
Здесь представлен блок настроек, у каждого поля из пункта 8 есть свои настройки. 
И сейчас мы о них детально поговорим. 

 

10. Кнопка Обновить страницу.


11. Кнопка Сохранить настройки.

Нельзя покидать вкладку Настройки парсинга в ИМ не нажав на данную кнопку. Все настройки которые не были сохранены при переходе будет удалены. 

 

12. Остановка парсинга.
Если вы запустили парсинг, данной кнопкой вы можете остановить процесс. После повторного нажатия на кнопку старт, модуль продолжит работу с того места где остановился. 

 

13. Запуск парсинга. 
После того как настроите все поля может нажимать и модуль начнет загружать, или обновлять товары. 

 

14. Прогресс бар.
В момент парсинга вы можете наблюдать сколько ссылок обработано, а сколько еше осталось. Эта строка загрузки показывает вам наглядно процесс выполнения работы модулем. 
Обратите внимание что прогресс бар появляется только когда вы нажимаете старт парсинга, и исчезает когда вы жмете Пауза парсинга. 

Основное знакомство с интерфейсом закончили. 

 


Настройки полей данных: Артикул, Название, Цена и т.д.

Это самая интересная часть настройки. Ниже я разберу настройку всех полей. Но перед тем как перейти к разбору настроек вам нужно понять пару важных моментов. 
С них я и начну. 

Я поделил данные в товаре на два типа.
1. Простые
2. Сложные.

К простым относятся такие данные как

Код товара [model]

Артикул [sku]

Название 

Цена
Количество
Производитель

Описание 

К сложным данным я отнес:
Категории
Фото
Атрибуты

 

Разница в том что у категории простые, может быть просто строка. То есть, название, Или просто цифра цены. Или название производителя. Текст описания. 
Для заполнения таких полей можно использовать обычную границу парсинга, которая возьмет слово с сайта донора и загрузит вам.  

У категории сложные все иначе. Поскольку к примеру изображения может быть 1 а может быть и 100, также категория может быть одна, а может быть целая структура.
Атрибуты так вообще там одна часть данных должна говорить что будет именем атрибута, а что его значением. 
 

Для этого я разработал вот эту строку, она универсальная. 
pr_im2.thumb.png.1d9b911bf53d1db72c50f569048c4437.png

К примеру вы можете записать в это поле слово Привет мир! И все товары которые будут парсится получат название Привет мир!
Вот пример.

  Скрыть контент

pr_im3.thumb.png.7d394d80e39f3b664c1f32d708871663.png
 

Результат 
pr_im4.thumb.png.2b77dde4813333767dea7abfa397dbe6.png

 


Но туда можно подсовывать данные парсинга, которые вы настраиваете на второй вкладке.
Для этого вам нужно написать {gran_id}

Где id это номер параметра парсинга что вы настраивали на вкладке Настройка парсинга. 
Я понимаю что это кажется чем то сверх сложным но для удобства я создал вам выпадающий список где вы можете увить Название границы парсинга, их id и когда вы выбираете границу она автоматически заполняет полу. То есть вручную вам ничего прописывать не нужно!

 

pr_im5.thumb.png.4abf5c3c299150071029005aa7f52acc.png

 

Но если хочется, вы можете это делать вручную, я не хотел вас ограничивать :)

Как заполнить разобрали теперь к самому веселому переходим.
Можно в данном поле использовать как границы парсинга, так и текст введенный вручную. Так и вперемешку!

То есть допустимо любой вариант заполнения. 
К примеру в название указать не одну границу парсинга, а вот так.  
{gran_82} | От производителя = {gran_94} | По цене = {gran_83}

Результат будет такой. 
 

  Скрыть контент

pr_im6.thumb.png.1fa4bbd37d69597afec8a22cfa1747c2.png

 

И это касается всех полей. Имени, артикула, или фото. Вообще всех.
Вы теперь можете парсить несколько описаний в магазине миксовать их и заполнять себе в одно описание. Я даже не представляю все варианты использования но мне кажется их просто неимоверно.

Если в поле имени, или цены, или артикула (то есть поля для простых данных) вставить повторяющуюся границу парсинга, все значения этой границы склеятся без разделителя и запишутся в это поле. 
Пример
 

  Скрыть контент

pr_im10.thumb.png.9b57e8a7d0af3f71a8e382658cd441ed.png




Так теперь переходим к сложным данным. 

Объясню на примере Изображений. 
Изображение может быть одно, а можете быть и сто. Значит ссылка на каждое фото должна быть отдельно определена. 
Для того что бы работать с сложными границами представьте что вы парсите в эксель файл. И вам нужно добиться что бы новое значение было в новой ячейки экселя. 
Для этого мы используем спец разделитель {csvnc} Для сложных данные все тоже самое. :) Вуаля, все кто пользовался модулем первой версии можете выдыхать вы уже на коне ! :grin:
Для того чтобы загрузить много фото вам нужно разделить их {csvnc} и все равно на каком этапе вы это сделаете. 
Можете через повторяющие границы парсинга, или через поиск замену какой то кусок кода заменить на {csvnc} 

  Скрыть контент

Настройки повторяющихся границ парсинга

pr_im7.thumb.png.b982cecaa4b172478b21be3608f093d8.png


Поиск замена
pr_im8.thumb.png.f0ad437e3682078f2490c5cbbc6cddea.png


Или даже напрямую в поле прописать 
{gran_id}{csvnc}{gran_id} - И это тоже будет работать. 


Одним словом не важно как вы это добьетесь. Решайте сами в какой ситуации как вам поступать удобнее. Гибкость наше все :)

Так же обратите внимание что в настройках повторяющихся границ не обязательно указывать {csvnc} Все разделители по умолчанию в парсинге в им, считаются как {csvnc} сделано для того что бы одни и теже границы можно было парсить как в файл, с своим разделителем, так и в магазин. Все для вас.

Я думаю главный сообщение я смог до вас донести. 

Разбор настройки полей парсинга в ИМ

 

Код товара

Формируется как простые данные. pr_im9.thumb.png.25ead313147431080ed49fff4df8845b.png
Действие работают только при добавлении нового товара. Пока не придумал обновления поля model но будет, хочу собрать пожелания пользователей. 

 

Доступные действия:
Создавать по умолчанию При создании по умолчанию в поле Код товара, она же model будет записан id товара. 
Парсить Тут все просто что спасите то и запишется. 

 

Артикул (sku)

Относится к простому типу. 

pr_im11.thumb.png.802f623ffb48ee42ee2e1142ff48b197.png


Действие работает только при обновлении товара. 
Обновлять
Не обновлять. 

 

Название

Относится к простому типу.

pr_im12.thumb.png.27e7c07f0145402dd8730cc39f31e2d7.png


Действие работает только при обновлении.
Обновлять
Не обновлять


Цена

Относится к простому типу.

pr_im13.thumb.png.c449a4c07f54e0db4317ca7ed0105616.png

 

Действие работает только при обновлении.

Обновлять
Не обновлять

 

Количество

Относится к простому типу.

pr_im14.thumb.png.11fcce8fe9b8507fda5d66df309d94f9.png

 

Действие работает только при обновлении.

Обновлять
Не обновлять

 

Значение по умолчанию
Это поле используется если основное не заполнено, либо если в момент парсинга на определенном товаре не было обнаружено нужных данных по границе парсинга, что вы указали. Но можно как на скриншоте в основное поле просто вести значение и не парсить, и тогда все товары получат это значение. 

Производитель. 
Относится к простому типу данных.

pr_im15.thumb.png.dce37589b0443f7bc9c065c7638ec181.png

 

Действие
Создать/Добавить/Обновить - Действие работает как при добавлении, обновлении товара. В магазине будет создан производитель, если такого не было раньше. И товар будет привязан к своему производителю. 

Только обновлять - Действие работает только при обновлении товара, если в магазине есть уже производитель то он привяжется к товару. Новые модуль создавать не будет. 

Нет - Не производить никаких действий с производителем. Ни при обновлении ни при добавлении товара. 

 

 

Описание
Относится к простому типу данных.

pr_im16.thumb.png.8d01bae3c9571a508cd7a787a36529de.png

 

Действие работает только при обновлении.
Обновлять
Не обновлять


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

 

 

Категории
Относится к сложным данным.

pr_im17.thumb.png.0367c5ed72482aa8ecf1f2d0d129f35f.png

Действие
Создать новые | Привязать товар - выбрав этот пункт модуль создаст категории которые вы парсите. Работает при добавлении и обновлении. 
Привязать товар | Не создавать новые - Модуль разместит товар только в тех категориях которые у вас созданы, и совпадают с теми что вы парсите. При обновлении если придут новые категории и у вас их нет, то категория в товаре не обновится. При добавлении товара если такой категории нет тогда товар создастся но не будет привязан ни к одной категории. 

Не создавать новые | Не обновлять [Не рекомендую, товар получит категорию с id = 0]  - При создании и товар не будет размешен ни в одной из существующих категорий. 

По умолчанию Вы можете выбрать категорию которая есть у вас в магазине и все товары которые вы парсите если нету данных по категориям получат эту категорию.
Либо если настройки категории не указаны. 
 

 

Фото
Относится к сложным данным.

pr_im18.thumb.png.1112691e197fe4cf16eb28c0fd25e91f.png

 

Действие 
Добавить при создании - Создает товар с фото.
Добавить при создании и обновлении товара - Добавит фото в все новые товары. А при обновлении к уже существующим товарам добавит доп фото. 

Обновлять [Заменит все фото у товара][Изображения не удаляются с сервера!] - Заменит фото в товаре при обновлении. Обратите внимание что физически изображения не удаляется, потому что мы не знаем привязано это изображение к другим товарам или нет. 

Нет - не работать с фото. 


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

 

Директория для фото - Здесь вы указываете в какую папку складывать фото что парсятся.

Все фото размешаются по стандарту опенкарт в директории /image/catalog/ . Директории вручную создавать ненужно модуль сам создать если их не будет. 
Допускается возможность в вода много уровней. К примеру можно в вести product и все фото что парсятся будут размешены в директории /image/catalog/product/
А можно указать так. /product/men/short/ и все фото будет размешены в директорию /image/catalog/product/men/short/ 
 

Подпапки
Значение Да значит в что в той директории что вы указали в поле Директория для фото , будут созданы под директории с именами 0,1,2,3,4,5,6,7,8,9
И все изображения будут размешены в этих директориях. Это нужно что бы снизить нагрузку на дисковую подсистему, если у вас много изображений и товаров. 

 

Нюансы 
Для того чтобы модуль мог скачать фото, ему нужно скормить границу парсинга в которой будет полный путь к фото. С http ...
Этого можно добиться используя поиск замену, и вставляя в начала границы доменное имя донора. Поскольку как правило у доноров относительный путь к к фото без указания доменного имени.
 

 

Атрибуты

Относится к сложным данным.

pr_im19.thumb.png.63ad5378bb0d733dc60fdf4de2d5188d.png

 

Действие
Создать/Добавить/Обновить - Создает новые атрибуты. Добавляет в товар при обновлении, и добавлении товара. 

Добавить/Обновить - Добавляет в товар атрибуты которые уже есть в магазине, и обновляет значение тех что есть у товара.

Обновить [Только существующие в товаре] - Если в товаре создан атрибут, и он есть на сайте доноре, то его значение модуль обновит. 

Удалить из товара создать заново - Удаляет атрибуты из товара. И записывает заново что есть на сайте доноре. 

Нет - Не работать с атрибутами. 

 

Нюансы
Для того что бы модуль правильно создал атрибут и присвоил ему значение нужно данные парсинга атрибутов привести к виду. 
Название{csvnc}Значение{csvnc}Название{csvnc}Значение{csvnc}Название{csvnc}Значение

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

Я сделал в последнем примере так.
 

Спойлер

pr_im20.thumb.png.1d249a4e0a036d7fd6b7addf03caecf9.png


Конец.
Надеюсь смог внятно объяснить. Может криво расписал, но как смог. Если остались вопросы задавайте буду отвечать. 
Надеюсь вам понравится, я старался. :oops:

  • +1 1

Share this post


Link to post
Share on other sites

Логи

 

Сейчас в логи пишутся сообщения об создании товара, создании новых категорий, атрибутов, об загрузке изображений.
Как это выглядит вы можете видеть на скриншоте ниже.
logs1.thumb.png.74d7c4e592b87872c08519b6549d0b43.png

 

При обновлении товара вы получите более полные логи о том какие действия производил модуль. 

logs3.thumb.png.3f85b52b5d3ae9e77bb73428c4dc6bf0.png

 

Интерфейс 

Здесь все довольно просто. У вас есть три копки.

logs2.png.38102e99b42fc4a324ff084316938d3b.png
1. Обновить логи, то есть что бы модуль загрузил все новые логи. Если вдруг у вас в одной вкладке идет парсинг, а в другой вы в режиме реального времени будете просматривать лог работы модуля. 

2. Скачать лог файл. Из за особенности работы веб протокола я ограничил просмотр лог файлов которые весят более 5мб Но вы можете скачать такой файл себе, и открыть лобым удобным редактором. 
3. Очистить логи. (думаю здесь пояснения не нужны.)

 

В модуле SimplePars вы можете создавать сколько угодно проектор и парсить любое количество сайтов доноров. По этому каждый проект имеет отдельные логи.
Допустим у вас два проекта, и в них вы парсите разные сайта. Так вот у каждого из проектор свой отдельных лог файл.


Логи размешаются в стандартной для Оpencart директории, а именно /system/storage/logs/simplepars_id-3.log
Где цифра 3 это id проекта который записывает логи в этот файл. Таких файлов будет столько сколько у вас проектов. 


Теперь давайте разберем основные логи.
 

2019-04-02 23:16:19| Парсинг : УСПЕШНЫЙ ЗАПРОС Код ответа [200] Ссылка | https://svetavto.com.ua/index.php?route=product/product&path=59&product_id=2334
2019-04-02 23:16:19| ->[ОБНОВЛЕН ТОВАР] ID = 1427 | Идентификатор sku = [005954]
2019-04-02 23:16:19| -->Обновление | Название = LED H11-H8 Type 15 CSP C-N_30W, 4000Lm_5700K (комплект)
2019-04-02 23:16:19| -->Обновление | Цена = 700
2019-04-02 23:16:19| -->Обновление | Количество = 999
2019-04-02 23:16:19| -->Обновление | Производитель id = 23
2019-04-02 23:16:19| -->Обновление | Описание = {описание в логи не пишется}
2019-04-02 23:16:19| -->Обновление | Категория id = 211 Адрес = LED (Светодиоды)
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Производитель: = CYCLON
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Цоколь = H11-H8
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Напряжение  = 12-24V
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Тип св. элемента = CSP
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Драйвер (cтабилизатор напр.) = Да
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Степень защиты = IP65
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Комплектность = 2 шт.
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Световой поток = 4000 Lm
2019-04-02 23:16:19| -->Обновление | Атрибут обновлен в товаре Потребляeмая мощность = 30W

Первым всегда приходит ответ от сервера откуда мы парсим. Либо удача либо нет.
В данном случаи:
2019-04-02 23:16:19| Парсинг : УСПЕШНЫЙ ЗАПРОС Код ответа [200] Ссылка | https://svetavto.com.ua/index.php?route=product/product&path=59&product_id=2334

Далее уже идет сообщение, либо обновления товара либо добавление нового. Такие строки начинаются с -> 

Здесь вы можете узнать об обновлении или добавлении нового товара. Его id в магазине, и его идентификатор. Идентификатор может быть как 

Артикул (sku)
Код товара (model)
Название товара (name) - не рекомендую использовать определение товара по имени. Это может привести к дублям товаров, и обновлением не тех товаров.

Такой подход легко поможет вам найти этот товар в интернет магазине :) 

 

Так же под символом -> идут сообщения при скачивании фото, создания производителей, атрибутов, категорий, и тому подобное. 


В случаи отказа добавлять новый товар или обновлять товар строка будет начинаться с !->
При таком подходе вы всегда сможете нажать в браузере ctrl+f и найти все негативные логи. То есть неудачи в работе с товаром.

Далее идут логи начинающиеся с --> это уже локальные задачи которые решает модуль.

Как правило это логи обновления. И здесь вы можете видеть что конкретно изменял модуль в конкретном товаре. 
При обновлении я решил писать по максимуму информации в логи, что бы пользователям можно было легко определить какие действия произвел модуль, и какие данные записал. 

 

На данный момент система логов в модуле только начинает становится на ноги, и я начинаю немного разбираться в этой теме и искать более удобные решения. 
Хотелось сделать так что бы пользователь мог всегда получить прозрачную информацию о работе модуля, и ему не приходилось разбираться в FTP и искать эти логи. Они должны быть под рукой потому что это очень полезный инструмент. 


Я надеюсь эта система будет удобна и вам. 

  • +1 1

Share this post


Link to post
Share on other sites

Пред просмотр парсинга в Интернет магазин
 

Данная страница несет только ознакомительный характер. Она ничего не меняет у вас в магазине.
При помощи этой страницы вы можете оттачивать настройки парсинга в интернет магазин.
Когда настройки будут готовы и результат выводимый здесь вас устроит  нажать заветную кнопку старт парсинга, на вкладке настройки парсинга в ИМ.

При заходе на на страницу Пред просмотр вы будете видеть стандартные пустые поля. Вот так:
 

  Скрыть контент

show_im1.thumb.png.f486d091271238a8d2774b326ad126e6.png



Но после того как вы выберите ссылку для пред просмотра и нажмете зеленую кнопку Пред просмотр страница преобразится show_im2.thumb.png.7655eb0e7c64eb603f5ec9b9527de183.png
 

 

При условии что вы правильно настроили границы парсинга, и выбрали поля на вкладке Настройка парсинга в ИМ, а если нет то как раз здесь вы увидите результат вашей работы. 

Здесь вы можете просмотреть настройку парсинга.
1. Название товара.
2. Производитель.

3. Артикул (sku) не путать с кодом товара.

4. Количество товара
5. Цена товара. (всегда указывается в Руб.) Это не значит что у вас в магазине товар будет в рублях, это просто для наглядности. Если у вас валюта стоит грн, доллар или евро, то при парсинге цена будет указана в той валюте которая включена в магазине. 

6. Категории. Вот как вы видите так товар и загрузится к вам. Сравнение категорий идет по всей структуре, а не только по младшей категории. 

7. Главное изображение товара.
8. 9. 10 - Дополнительные изображения. Хотя доп изображения может быть неограниченное количество. Просто в этом примере только три изображения. 

11. Описание.
12. Атрибуты 

На случай если в описании вы увидели нежелательный текст, или теги html кода, можете нажать на кнопку поиск замена и сразу перейти к настройки правил очистки текста. 

Share this post


Link to post
Share on other sites

много инфы, за раз не осилил :)

пару вопросов:

1. Парсинг атрибутов.

В АОП реализовали, а тут так и не понял есть ли - надо просто спарсить значение атрибута и присвоить к уже имеющемуся атрибуту, т.е. со страницы берём, например, "2019" заносим в прописанный атрибут вручную (или выбранный из списка атрибутов, что лучше, т.к. по ID более точно привяжется) "Год выпуска", при этом "Год выпуска" берем из базы атрибутов, а не со страницы донора. В принципе можно и вручную создать границы для каждого атрибута, как делалось для создания в таблице колонок с названиями атрибутов, но как дополнительная возможность не помешала бы.

 

2. Обновление товаров.

Реализована ли возможность обновлять и добавлять только новые товары? для такого вида парсинга, думаю, что актуально, т.к. ранее внесенные/обновленные товары зачастую после парсинга дополнительно подвергаются редактированию, и не хотелось бы, чтобы при последующем обновлении модулем информация терялась/перезаписывалась. Тут можно бы было сделать функционал ,например, "обновить только новые товары" - те, которых ранее не было в списке парсинга, и "обновить товары по дате добавления" с  выбором временного промежутка, можно и "обновить новые товары по ID" - указав ID товаров от и до.

 

3. Идентификатор товара.

К списку "а) Код товара (он же model), б) Артикул (поле sku), в) Название" можно добавить еще связанные sku из АОП, или выбор идентификатора пользователем. Объясню на примере. Есть прайс поставщика в котором не на всех товарах имеется артикул производителя и EAN или товар имеет одинаковый артикул, т.е. как бы привязаться в этом прайсе общим стандартом нельзя - часть товаров пропадет при парсинге или заменится следующим, но имеется складской номер поставщика на всех товарах - по нему АОП и парсит как по основному sku, а колонки EAN и/или Артикул из прайса АОП берет как связанные sku. В таком случае АОП может найти товар в других прайсах, например, взяв связанный EAN. Понятно, что в таком случае идентифицировать товар просто по sku со сторонних источников не получится - необходимо дополнить идентификатор как минимум поиском по связанным sku, либо по какому-то другому идентификатору - можно сделать поле, в котором указать этот идентификатор, например, {atr[Код товара производителя]} - привязываться к атрибуту "Код товара производителя" (часто дополнительные идентификаторы вносят в атрибуты). Еще не надо забывать про стандартные поля движка как EAN, ISBN и другие - их бы тоже не мешало внести как идентификаторы.

 

Edited by stas2010

Share this post


Link to post
Share on other sites
5 часов назад, stas2010 сказал:

1. Парсинг атрибутов.

В АОП реализовали, а тут так и не понял есть ли - надо просто спарсить значение атрибута и присвоить к уже имеющемуся атрибуту, т.е. со страницы берём, например, "2019" заносим в прописанный атрибут вручную (или выбранный из списка атрибутов, что лучше, т.к. по ID более точно привяжется) "Год выпуска", при этом "Год выпуска" берем из базы атрибутов, а не со страницы донора. В принципе можно и вручную создать границы для каждого атрибута, как делалось для создания в таблице колонок с названиями атрибутов, но как дополнительная возможность не помешала бы.

Сейчас атрибуты парсятся с сайта донора. И заносятся у товара.
Схема где вы парсите и выбираете атрибут в магазине отсутствует. 
НО если вам нужен конкретный атрибуты вы его можете спарсить через границы и через поиск замену заменить его имя на нужное вам. 

Все атрибуты которые совпадают по имени с теми что в магазине, берут id атрибута с магазина и присваиваются товару. 
 

Цитата

2. Обновление товаров.

Реализована ли возможность обновлять и добавлять только новые товары? для такого вида парсинга, думаю, что актуально, т.к. ранее внесенные/обновленные товары зачастую после парсинга дополнительно подвергаются редактированию, и не хотелось бы, чтобы при последующем обновлении модулем информация терялась/перезаписывалась. Тут можно бы было сделать функционал ,например, "обновить только новые товары" - те, которых ранее не было в списке парсинга, и "обновить товары по дате добавления" с  выбором временного промежутка, можно и "обновить новые товары по ID" - указав ID товаров от и до.

Вообще никогда такое ненужно было. Обновляет товар у которого совпал идентификатор с идентификатором в магазине. 
Но если будет сильно нужно тогда подумаю. 

 

 

Цитата

3. Идентификатор товара.

К списку "а) Код товара (он же model), б) Артикул (поле sku), в) Название" можно добавить еще связанные sku из АОП, или выбор идентификатора пользователем.Объясню на примере. Есть прайс поставщика в котором не на всех товарах имеется артикул производителя и EAN или товар имеет одинаковый артикул, т.е. как бы привязаться в этом прайсе общим стандартом нельзя - часть товаров пропадет при парсинге или заменится следующим, но имеется складской номер поставщика на всех товарах - по нему АОП и парсит как по основному sku, а колонки EAN и/или Артикул из прайса АОП берет как связанные sku. В таком случае АОП может найти товар в других прайсах, например, взяв связанный EAN. Понятно, что в таком случае идентифицировать товар просто по sku со сторонних источников не получится - необходимо дополнить идентификатор как минимум поиском по связанным sku, либо по какому-то другому идентификатору - можно сделать поле, в котором указать этот идентификатор, например, {atr[Код товара производителя]} - привязываться к атрибуту "Код товара производителя" (часто дополнительные идентификаторы вносят в атрибуты). Еще не надо забывать про стандартные поля движка как EAN, ISBN и другие - их бы тоже не мешало внести как идентификаторы.

Буду вносить новые типы идентификатора по мере необходимости.  Пока внес то что постоянно спрашивали в моей практике парсинга.

По поводу связанных ску. Это фишка АОП и как я понимаю хранится эта информация здесь.
http://joxi.ru/KAgob5vfE54z1A
Мой модуль работает с стандартными таблицами опенкарт. Не хочу привязывать его к работе с нестандартными таблицами. 
Во время эксплуатации буду видеть потребности пользователей и корректировать модуль. 

Share this post


Link to post
Share on other sites

@stas2010 а вот по поводу много информации. 
Вы главное первый пост прочтите, именно тот где парсинг в им.
И в основном нужно понять только вот эту часть. остальное должно быть уже понятно,

 

Спойлер

Настройки полей данных: Артикул, Название, Цена и т.д.

Это самая интересная часть настройки. Ниже я разберу настройку всех полей. Но перед тем как перейти к разбору настроек вам нужно понять пару важных моментов. 
С них я и начну. 

Я поделил данные в товаре на два типа.
1. Простые
2. Сложные.

К простым относятся такие данные как

Код товара [model]

Артикул [sku]

Название 

Цена
Количество
Производитель

Описание 

К сложным данным я отнес:
Категории
Фото
Атрибуты

 

Разница в том что у категории простые, может быть просто строка. То есть, название, Или просто цифра цены. Или название производителя. Текст описания. 
Для заполнения таких полей можно использовать обычную границу парсинга, которая возьмет слово с сайта донора и загрузит вам.  

У категории сложные все иначе. Поскольку к примеру изображения может быть 1 а может быть и 100, также категория может быть одна, а может быть целая структура.
Атрибуты так вообще там одна часть данных должна говорить что будет именем атрибута, а что его значением. 
 

Для этого я разработал вот эту строку, она универсальная. 
pr_im2.thumb.png.1d9b911bf53d1db72c50f569048c4437.png

К примеру вы можете записать в это поле слово Привет мир! И все товары которые будут парсится получат название Привет мир!
Вот пример.

  Скрыть контент
  Скрыть контент

pr_im3.thumb.png.7d394d80e39f3b664c1f32d708871663.png
 

Результат 
pr_im4.thumb.png.2b77dde4813333767dea7abfa397dbe6.png

 


Но туда можно подсовывать данные парсинга, которые вы настраиваете на второй вкладке.
Для этого вам нужно написать {gran_id}

Где id это номер параметра парсинга что вы настраивали на вкладке Настройка парсинга. 
Я понимаю что это кажется чем то сверх сложным но для удобства я создал вам выпадающий список где вы можете увить Название границы парсинга, их id и когда вы выбираете границу она автоматически заполняет полу. То есть вручную вам ничего прописывать не нужно!

 

pr_im5.thumb.png.4abf5c3c299150071029005aa7f52acc.png

 

Но если хочется, вы можете это делать вручную, я не хотел вас ограничивать :)

Как заполнить разобрали теперь к самому веселому переходим.
Можно в данном поле использовать как границы парсинга, так и текст введенный вручную. Так и вперемешку!

То есть допустимо любой вариант заполнения. 
К примеру в название указать не одну границу парсинга, а вот так.  
{gran_82} | От производителя = {gran_94} | По цене = {gran_83}

Результат будет такой. 
 

  Скрыть контент
  Скрыть контент

pr_im6.thumb.png.1fa4bbd37d69597afec8a22cfa1747c2.png

 

И это касается всех полей. Имени, артикула, или фото. Вообще всех.
Вы теперь можете парсить несколько описаний в магазине миксовать их и заполнять себе в одно описание. Я даже не представляю все варианты использования но мне кажется их просто неимоверно.

Если в поле имени, или цены, или артикула (то есть поля для простых данных) вставить повторяющуюся границу парсинга, все значения этой границы склеятся без разделителя и запишутся в это поле. 
Пример
 

  Скрыть контент
  Скрыть контент

pr_im10.thumb.png.9b57e8a7d0af3f71a8e382658cd441ed.png




Так теперь переходим к сложным данным. 

Объясню на примере Изображений. 
Изображение может быть одно, а можете быть и сто. Значит ссылка на каждое фото должна быть отдельно определена. 
Для того что бы работать с сложными границами представьте что вы парсите в эксель файл. И вам нужно добиться что бы новое значение было в новой ячейки экселя. 
Для этого мы используем спец разделитель {csvnc} Для сложных данные все тоже самое. :) Вуаля, все кто пользовался модулем первой версии можете выдыхать вы уже на коне ! :grin:
Для того чтобы загрузить много фото вам нужно разделить их {csvnc} и все равно на каком этапе вы это сделаете. 
Можете через повторяющие границы парсинга, или через поиск замену какой то кусок кода заменить на {csvnc} 

  Скрыть контент
  Скрыть контент

Настройки повторяющихся границ парсинга

pr_im7.thumb.png.b982cecaa4b172478b21be3608f093d8.png


Поиск замена
pr_im8.thumb.png.f0ad437e3682078f2490c5cbbc6cddea.png


Или даже напрямую в поле прописать 
{gran_id}{csvnc}{gran_id} - И это тоже будет работать. 


Одним словом не важно как вы это добьетесь. Решайте сами в какой ситуации как вам поступать удобнее. Гибкость наше все :)

Так же обратите внимание что в настройках повторяющихся границ не обязательно указывать {csvnc} Все разделители по умолчанию в парсинге в им, считаются как {csvnc} сделано для того что бы одни и теже границы можно было парсить как в файл, с своим разделителем, так и в магазин. Все для вас.

Я думаю главный сообщение я смог до вас донести.

 

Share this post


Link to post
Share on other sites

Потыкаем, потестим, Axelenz найдет "не удобные условия" :D и обкатаем. Выкладывайте, ждем))))

Edited by pomansur

Share this post


Link to post
Share on other sites

Уважаемый автор, не знаю как во второй версии, но в первой неть) вроде поддержки кук , можно добавить пару строк CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE в CURL. чтобы не вручную добавлять при обновление модуля?

Edited by pomansur
  • +1 1

Share this post


Link to post
Share on other sites
30 минут назад, pomansur сказал:

Уважаемый автор, не знаю как во второй версии, но в первой неть) вроде поддержки кук , можно добавить пару строк CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE в CURL. чтобы не вручную добавлять при обновление модуля?

Нет в версии 2 кук тоже не будет :( 
Я еше не до конца решил как все будет работать, и пока еше учусь, а изучать мне еше очень много. 

Но куки это 100% будет реализовано. Это нужно. 

Буду признателен если вы мне напишите как вам было бы удобно реализовать работу с куками. 

Share this post


Link to post
Share on other sites
Только что, Rassol2 сказал:

Нет в версии 2 кук тоже не будет :( 
Я еше не до конца решил как все будет работать, и пока еше учусь, а изучать мне еше очень много. 

Но куки это 100% будет реализовано. Это нужно. 

Буду признателен если вы мне напишите как вам было бы удобно реализовать работу с куками. 

Ну например как в парсере яндекс маркета от Игуана, помоему удобно)) да все равно вроде как, или в папку кидать или через загрузчик загружать загружаемое))

  • +1 1

Share this post


Link to post
Share on other sites
4 минуты назад, pomansur сказал:

Ну например как в парсере яндекс маркета от Игуана, помоему удобно)) да все равно вроде как, или в папку кидать или через загрузчик загружать загружаемое))

Ок попробую придумать юсер френдли работу с куками :) 

Share this post


Link to post
Share on other sites
5 часов назад, Rassol2 сказал:

а вот по поводу много информации. 

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

 

Share this post


Link to post
Share on other sites
Только что, stas2010 сказал:

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

 

Да я понял, но все равно выделил вам отдельно самую важную часть. 
Если это осознаете тогда можно будет делать разные веселые штуки. 

Share this post


Link to post
Share on other sites

Мальдивы

В 02.04.2019 в 20:21, pomansur сказал:

Бери сразу 10, потом загонишь кому нить))) Чувствую, Канары по тебе плачут.

 

Буду за Вами.

Канары помоему мимо нас прошли))) Но 300 рублей, есть 300 рублей. Если впереди никого нет, пошел покупать)

Share this post


Link to post
Share on other sites

Обновление версия 2.0

За последние дни много чего уже написал. Поэтому будет короткое сообщение.

Отмечу два главных пункта. 
1. Модуль пока в бета тестировании и использовать на боевых проектах не рекомендую, все на свой страх и риск.
2. Версия 2 несовместима с первой 1.3 и при установки второй версии нужно удалить старые базы даннх. Дальше я буду делать совместимость. Но тут так повелось что сильно разные цели были у первой и второй версии.

Инструкция для обновления с версии 1.3 на версию 2.0

1. Загрузить содержимое директории uploads  в корень сайта.

2. Если вы обновляетесь с версии 1.3 на версию 2  вам необходимо загрузить файл delet_v1.php с директории updete_from_1_to_2 и выполнить. Если нет то пропускаем этот пункт. и переходим к пункту три! (Обратите внимание что версия 2.0 несовместима с 1.3 и после выполнения этого действия, все настройки сделанные в модуле SimplePars будут удалены.)
3. Выполнить ваш_сайт/inst.php

4. Удалить с корня сайта файл inst.php (Это важно!)

Сейчас доделываю инструкцию, и обновлю сайт модуля с инструкцией. По что в сообщениях выше вы можете прочесть всю информацию о новых версиях. 

Share this post


Link to post
Share on other sites
12 минут назад, pomansur сказал:

Мальдивы

Канары помоему мимо нас прошли))) Но 300 рублей, есть 300 рублей. Если впереди никого нет, пошел покупать)

Я писал в данной ветке что модуль будет платным. 

 

К примеру здесь:
 

В 15.03.2019 в 16:17, Rassol2 сказал:
Цитата

Еще такой вопрос, будет ли он платным?


По поводу платной версии. Когда выйдет версия 2 модуль будет платным. Но кто поддерживал модуль здесь и подписан на данный модуль не будут обижены. И к старту продаж я выставлю модуль по самой низкой цене что можно поставить на данном ресурсе, и кто подписан сможет зайти и приобрести его по 300р если не ошибаюсь. 
Приобретение даст возможность дальше обновляться. 


Главный фактор перевод модуля на платную основу это освободить свое время от выполнения заказов, что бы я мог больше времени уделять разработке. 
Это поможет сделать модуль лучше.
Второй фактор, есть много платных модулей которые делают аналогичную работу, и заниматься демпингом я не буду.

Приобретя сейчас модуль вы получаете доступ к обновлениям. Так что кто подписан на данный модуль и модуль помогает решать задачи, может купить по самой низкой цене что дозволена на форуме, и получать обновления. 

Что бы все стало прозрачно, ориентировочно цена модуля будет 1500р когда я все доделаю. 

Прошу простить, понять, и отпустить :cry:

Share this post


Link to post
Share on other sites

Да кто же спорит)) Вы пилите, пилите))

Share this post


Link to post
Share on other sites

После обновления сайта с инструкцией, на сайте будет лежать ссылка на скачивание версии SimplePars v1.3.2-3 Бесплатно. 
Кому достаточно только сбора ссылок в прайс, сможете пользоваться дальше. 

Share this post


Link to post
Share on other sites

Добрый день, а подскажите куда копнуть, при выборе ссылки на второй вкладке, модуль вываливается в ошибку.

Share this post


Link to post
Share on other sites
Добрый день, а подскажите куда копнуть, при выборе ссылки на второй вкладке, модуль вываливается в ошибку.
Покажите скриншо, или скиньте строку с ошибкой.

Отправлено с моего Pixel через Tapatalk

Share this post


Link to post
Share on other sites

Хотел бы узнать мнение тех кто уже коснулся к второй версии модуля.
Сейчас очень интересует как вам работа с вот этим полем ? 
9f08b2d0cc.thumb.png.e0175e344d42730afbfadd1dc7f9f77f.png

 

Поскольку я собираюсь улучать сбор ссылок и формирование прайс листов. И подобное решение здесь - http://joxi.ru/Q2KYWgJuLOO0Lr 

Cможет немного развязать руки в плане формирования прайс листов. 

Так же забыл написать что в версии 2 тег {csvnl} - Уже работает. И вы можете реализовывать вот такие схемы.
https://opencartforum.com/topic/123017-podderzhka-simplepars-universalnyy-parser-dlya-im/?do=findComment&comment=1254374

PS. Не путайте {csvnc} c  {csvnl
{csvnc} - переход на следующий ячейку справа. 

{csvnl} - переход на следующий строку. (в основном нужно при парсинге ссылок.)
 

 

Share this post


Link to post
Share on other sites

А подскажите, как сделать такой вот финт при парсинге картинок, есть ссылка вида, https://сайт/ %id% /%имя файла%.jpg

 

id я получаю

и имя файла я получаю

 

проблема в том, что на странице одного товара меняется только  id дополнительных фото, имя файла одинаково

 

путем замены и подстановки я получаю все ссылки нужно формата, но только до https://сайт/ %id% /  как мне подставить в конец  имя файла ?

?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Rassol2
      Модуль SimplePars предназначен для парсинга и наполнения интернет магазина. 
       
      Идея модуля заключается в том что бы вы могли заварить чашечку кофе и наблюдать как ваш магазин наполняется товарами.
      Ведь намного приятнее наблюдать за строкой загрузки товара, чем заполнять каждую позицию вручную

       
      Возможности модуля SimplePars
      Основные задачи которые решает модуль это парсинг данных с сайта и последующее заполнение интернет магазина.
      Вы можете как парсить напрямую в интернет магазин, так и парсить в CSV файл для дальнейшей обработки. 
      Так же реализовано обновления товаров при помощи парсинга сайтов доноров. 
       
      В двух словах не описать что умеет делать модуль, по этому обозначу только основные моменты.

      - Полноценный парсер позволяющий парсить товары со сторонних магазинов и загружать себе.
      - Встроенный гибкий сборщик ссылок , который поможет собрать ссылки на необходимые товары.
      - Возможен парсинг и загрузка всех элементов товара.
      Код товара [model] Артикул [sku] Название Цена Количество Производитель Описание Категории Изображения Атрибуты Опций Данные - товара. Более подробно можете увидеть на скриншотах модуля.
       
      - Кроме загрузки возможно настройка обновления существующих товаров, цен, остатков и многое другое.
      - Идентификация товара по артикулу, модели или имени товара.
      - Доступна установка наценок любой сложности.
      - Парсинг / Составление SEO шаблонов и заполнение Мета данных товара, категорий, производителей. Заполнение SEO_URL
      - Формировать прайс csv с данными что вы парсите. Так же прайсы можно составлять в готовом формате для загрузки через АОП или любого другого загрузчика прайс листов. 
      - Поиск замена, мощный инструмент позволяющий вам налету изменять информацию. То есть, при парсинге вы можете вырезать или заменять определенные слова или целые блоки текста. Удалять или заменять в тексте названия сайта донора на ваш. И многое другое.
      - Поиск замена полностью поддерживает регулярные выражения.
      - Модуль способен парсить в многопоточном режиме. Что делает парсинг максимально быстрым.
      - Поддерживается парсинг с авторизацией.
      - Поддержка работы с прокси.
      - Собственный прокси чекер, позволяющий отобрать прокси сервера котороые будут работать с конкретным донором.
      - Возможна индивидуальная настройка запросов, Указание Cookies, User-Agent, Отправка собственных заголовков Headers
      - Система логирования позволяющая контролировать процесс парсинга на любом этапе.
      - Система кеширования сайта донора для безопасного парсинга подробнее Описание системы кеширования 
       
      Вы можете указать любое количество границ парсинга, на любые данные что есть в html коде сайта донора.
      SimplePars это универсальный инструмент который поможет вам наполнить ваш интернет магазин.
      Обратите внимание что вы можете настроить парсинг на любые данные, и необязательно они должны быть совместимы с opencart. Вы можете парсить статьи, отзывы, блоги.
       
      В данном модуле есть возможность парсить все данные в CSV файл
      Можно формировать прайс листы для загрузки их через популярные дополнения. 
      Такие как:
      Автоматическая обработка прайс листов. 
      CSV Price Pro import/export
       
      И это малая часть тех задач которые может выполнить данный модуль.
      SimplePars разрабатывается как универсальный парсер, у него нету четких задач, у него есть только набор инструментов.
      А что вы построите имея эти инструменты, уже зависит только от вас.
       
      Инструкция к модулю доступна по ссылке
      Инструкция к модулю SimplePars
       
       
      Демо сайт для ознакомления с интерфейсом и возможностями модуля
      Обратите внимание что на демо сайте парсинг недоступен.
      http://demo.simplepars.top/admin/
      Логин - demo
      Пароль - demo
       
      Лицензионное соглашение.
      Ознакомится
       
      Обзор возможностей модуля (Видео уже устарело. Модуль шагнул гораздо дальше )
       
      Инструкция по установке.
      Установка SimplePars
      1. Зайдите в директорию вашей версии модуля и скопируйте все в корень сайта с заменой.
      2. Введите в строке браузера ваш_сайт/inst.php и нажмите Enter.
      3. Далее перейдите в раздел Система->Пользователи->Группы пользователей->Администратор нажмите выделить все в двух разделах:
      Разрешить просмотр Разрешить редактировать Затем нажмите сохранить.
      4. Зайдите в "Модификаторы" или "Менеджер дополнений", и нажмите Обновить. 
      5. После этого удалите в корне сайта файл inst.php
      Все, модуль установлен.
      В разделе Каталог под пунктом Производители появится пункт SimplePars это вход в модуль. 
       
      Инструкция по обновлению
      1. Загрузить содержимое директории c названием вашей версии  в корень сайта.
      2. Выполнить ваш_сайт/inst.php
      3. Удалить с корня сайта файл inst.php
       
      После установки или обновления я вижу белый экран или ошибку 500
      Если видите белый экран, то вам необходимо перейти в архив с модулем в директорию Other versions of PHP и там будут лежать файлы под все версии php.
      Открываете папку с именем вашей версии php и загружаете содержимое в корень магазина.
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.