Мод обработки загрузки характеристик яндекс.маркет

Опубликовал Ewgen Kiselev (ewgen87) в раздел Обработки - Обработка справочников

Обработка для загрузки характеристик товара с сервиса "Яндекс.Маркет".

С разрешения ltfriend выкладываю модификацию обработки http://infostart.ru/public/195029/ для "УТ 10.3"
Отличия: 
Поиск по наименованию номенклатуры из встроенного браузера 
Загрузка происходит как со страницы "описание" так и со страницы "характеристики". 
Картинка загружается с основной страницы товара (раньше не все картинки загружались) 
Решил проблему с часто встречающейся ошибкой: "Ошибка при разборе HTML страницы! Возможно, адрес указан не верно или изменилась разметка страницы источника."

UPD в новой обработке парсинг происходит не через запросы, а из страницы браузера

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

13.04.15 поправил код. Код КнопкаВыполнитьНажатие в форме ФормаВыбораСтраницы выложил в комментариях

23.10.15 немного изменился код, подробности комментариях

19.02.16 Поправил код

Пример работы обработки: http://youtu.be/jGNKYdHXeXk

08.10.16 Поправил код, проверил работу на Internet explorex 8 и 11 

19.01.17 Закоментировал код от старой версии маркета, привязал кнопку Яндекс.Маркет  к форме

Скачать файлы

Наименование Файл Версия Размер
Парсер характеристик яндекс.маркет
.epf 19,70Kb
19.01.17
35
.epf 6.1 19,70Kb 35 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Яков Коган (Yashazz) 1961 17.07.14 18:00 Сейчас в теме
Советую: не качайте и не связывайтесь с подобными блоками. Стоит Яндексу поменять DOM или чуть поиграть с форматом, а они это любят делать, так все эти обработки идут в dev/null
2. Ewgen Kiselev (ewgen87) 8 18.07.14 10:44 Сейчас в теме
(1) Yashazz, С такими убеждениями можно и в каменном веке сидеть ничего не менять. У вас есть предложение как загрузить характеристики сотней товаров, с десятками характеристик на каждый товар, при условии изменения формата страницы? По сути - обработка рабочая.
3. Виктор Фролов (luckardo) 9 22.07.14 01:48 Сейчас в теме
4. Ewgen Kiselev (ewgen87) 8 23.07.14 17:46 Сейчас в теме
Переработал обработку - теперь парсит сразу

Парсер характеристик яндекс.маркет(рабочая версия)
5. Ewgen Kiselev (ewgen87) 8 30.07.14 14:45 Сейчас в теме
Если у вас ругается на "ЯчейкаТаблицы = КолонкиТаблицы.ДочерниеУзлы[2];" поставьте "ЯчейкаТаблицы = КолонкиТаблицы.ДочерниеУзлы[1];"
6. Евгений Павлов (rebellium) 15.01.15 11:58 Сейчас в теме
1С 8.3.5.1098 + УТ 11.1.7.54
Не открывается обработка. Разворачивается пустая область.
7. Ewgen Kiselev (ewgen87) 8 15.01.15 14:54 Сейчас в теме
(6) rebellium, Обработка для "УТ 10.3" для УТ 11.1.7.54 скорее всего работать не будет
8. Евгений Павлов (rebellium) 15.01.15 16:25 Сейчас в теме
(7)
А поправить это можно? Прям космически важная и нужная обработка
9. Ewgen Kiselev (ewgen87) 8 16.01.15 13:53 Сейчас в теме
(8) rebellium, Установил для пробы ут 11 - разобраться очень сложно, эту обработку переделывал для себя, а чтобы разобраться в ут 11 нужно много времени. а вот эта обработка у Вас работает: http://infostart.ru/public/153736/ ? она для УТ11
10. Евгений Павлов (rebellium) 16.01.15 14:39 Сейчас в теме
(9) ewgen87,
Запускается, но выдаёт ошибку при разборе с основной страницы товара. Видимо из-за разметки Маркета. Если из страницы с характеристиками, то выдаёт ошибкуВ
{(6, 38}): Поле не найдено "ДополнительныеРеквизитыИСведения.ЭтоГруппа"
НЕ ДополнительныеРеквизитыИСведения.<<?>>ЭтоГруппа
11. Ewgen Kiselev (ewgen87) 8 13.02.15 23:31 Сейчас в теме
Изменилась разметка в яндекс.маркет ( буду стараться переделать
12. Ewgen Kiselev (ewgen87) 8 17.02.15 17:46 Сейчас в теме
17.02 Переписал обработку - теперь работает с новой разметкой яндекса, но так как яндекс не на весь товар обновил разметку, то реализовал что-бы парсер работал и со старой версией
13. andrey kharlamov (harlag) 04.03.15 13:09 Сейчас в теме
УТ 10.3.30.1 + 17.02.2015.ЗагрузкаХарактеристикТовараСЯндекМаркет
как добавить кнопку "Поиск Яндекс.Маркет" под картинкой как на видео?
14. Ewgen Kiselev (ewgen87) 8 04.03.15 13:38 Сейчас в теме
(13) harlag, Для этого нужно в конфигурацию встроить внешнюю обработку. В справочник Номенклатура на форме "Форма элемента" добавить кнопку. В обработчик событий кнопки добавить

ОбработкаЗагрузкаХарактеристикМаркет = Обработки.ЗагрузкаХарактеристикТовараСЯндекМаркет.ПолучитьФорму("Форма");
ОбработкаЗагрузкаХарактеристикМаркет.Номенклатура = Ссылка;
ОбработкаЗагрузкаХарактеристикМаркет.ОткрытьМодально();


15. Ewgen Kiselev (ewgen87) 8 13.04.15 21:40 Сейчас в теме
Немного поменялся код в яндексе выкладываю код процедуры КнопкаВыполнитьНажатие в ФормаВыбораСтраницы:

Процедура КнопкаВыполнитьНажатие(Кнопка)
  ОбработкаОбъект.ВебСтраница1 = ЭлементыФормы.ПолеHTMLДокумента1.Документ.URLUnencoded;
  ОбработкаОбъект.АдресСсылка = ВебСтраница1;
  НайденнаяСсылка = Найти(ВебСтраница1,"?hid");
  НайденнаяСсылкаСтар = Найти(ВебСтраница1,"model");
  НайденнаяСсылкаШовУид = Найти(ВебСтраница1,"?hid&show-uid");

  Если НайденнаяСсылка > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"?hid","/spec?hid");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"/spec?hid","?hid");
	   ВерсияМаркета = Истина;
  КонецЕсли;
   
  Если НайденнаяСсылкаШовУид > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"?hid&show-uid","/spec?hid");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"/spec?hid","?hid&show-uid");
	   ВерсияМаркета = Истина;
  КонецЕсли;

  
  Если НайденнаяСсылкаСтар > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"model.xml","model-spec.xml");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"model-spec.xml","model.xml");
	   ВерсияМаркета = Ложь;
  КонецЕсли;
  
  Если АдресСсылка1 <> АдресСсылка тогда
	  ЭлементыФормы.ПолеHTMLДокумента2.Перейти(АдресСсылка2);
	  ЭлементыФормы.ПолеHTMLДокумента1.Перейти(АдресСсылка1);
	  Предупреждение("Перенаправление на страницу характеристик. Дождитесь загрузки страницы и нажмите Ок");
  Иначе 
	  ЭлементыФормы.ПолеHTMLДокумента2.Перейти(АдресСсылка2);
	  Предупреждение("Попытка загрузки характеристик");
  КонецЕсли;
  Данные = ЭлементыФормы.ПолеHTMLДокумента1.ПолучитьТекст();
  Данные1 = ЭлементыФормы.ПолеHTMLДокумента2.ПолучитьТекст();
  выполнение = Истина;
  Закрыть();
КонецПроцедуры
...Показать Скрыть
16. Ewgen Kiselev (ewgen87) 8 14.05.15 10:32 Сейчас в теме
UPD 14.05
Яндекс-маркет перешел на https. Для поиска по названию номенклатуры нужно в процедуре "ПриОткрытии()" заменить строку на:
ЭтаФорма.ЭлементыФормы.АдресСсылки.Значение = "https://market.yandex.ru/search.xml?&text=" + Номенклатура.Наименование;
17. Ewgen Kiselev (ewgen87) 8 23.10.15 22:35 Сейчас в теме
UPD 23.10

У Яндекса очередное "супер-мега" обновление:
в названии класса добавилось слово -wrap:
layout__col layout__col_size_p75 product-spec-wrap

Найти в конфигураторе: product-spec
Заменить на: product-spec-wrap
18. Ewgen Kiselev (ewgen87) 8 19.02.16 17:29 Сейчас в теме
UPD 19.02.2016

При точном наименовании номенклатуры (таким-же как в яндекс.маркет) страница переходит сразу в описание, но адресная строка немного другая. Поправил. Должно работать.

Процедура КнопкаВыполнитьНажатие(Кнопка)
  ОбработкаОбъект.ВебСтраница1 = ЭлементыФормы.ПолеHTMLДокумента1.Документ.URLUnencoded;
  ОбработкаОбъект.АдресСсылка = ВебСтраница1;
  НайденнаяСсылка = Найти(ВебСтраница1,"?hid");
  НайденнаяСсылкаСтар = Найти(ВебСтраница1,"model");
  НайденнаяСсылкаШовУид = Найти(ВебСтраница1,"?hid&show-uid");
  НайденнаяСсылкаРедир = Найти(ВебСтраница1,"?was_redir=1&hid");

  Если НайденнаяСсылка > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"?hid","/spec?hid");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"/spec?hid","?hid");
	   ВерсияМаркета = Истина;
  КонецЕсли;
   
  Если НайденнаяСсылкаШовУид > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"?hid&show-uid","/spec?hid");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"/spec?hid","?hid&show-uid");
	   ВерсияМаркета = Истина;
  КонецЕсли;

  
  Если НайденнаяСсылкаСтар > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"model.xml","model-spec.xml");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"model-spec.xml","model.xml");
	   ВерсияМаркета = Ложь;
  КонецЕсли;
   
  Если НайденнаяСсылкаРедир > 0 тогда
	   АдресСсылка1 = СтрЗаменить(АдресСсылка,"?was_redir=1&hid","/spec?hid");
  	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"?was_redir=1&hid","?hid");
	   ВерсияМаркета = Истина;
  КонецЕсли;
  
  Если АдресСсылка1 <> АдресСсылка тогда
	  ЭлементыФормы.ПолеHTMLДокумента2.Перейти(АдресСсылка2);
	  ЭлементыФормы.ПолеHTMLДокумента1.Перейти(АдресСсылка1);
	  Предупреждение("Перенаправление на страницу характеристик. Дождитесь загрузки страницы и нажмите Ок");
  Иначе 
	  ЭлементыФормы.ПолеHTMLДокумента2.Перейти(АдресСсылка2);
	  Предупреждение("Попытка загрузки характеристик");
  КонецЕсли;
  Данные = ЭлементыФормы.ПолеHTMLДокумента1.ПолучитьТекст();
  Данные1 = ЭлементыФормы.ПолеHTMLДокумента2.ПолучитьТекст();
  выполнение = Истина;
  Закрыть();
  КонецПроцедуры
...Показать Скрыть
19. Сергей Инкогнито (graf1976) 07.09.16 14:33 Сейчас в теме
Обработка актуальная? Появилась потребность
20. Ewgen Kiselev (ewgen87) 8 07.09.16 14:50 Сейчас в теме
(19) graf1976, Сегодня проверял - работает, правда желательно пользоваться совместно с обработкой http://infostart.ru/public/14986/ (бесплатная). Так как тут в этой обработке нет проверки на существование такой-же характеристики в реестре, поэтому создается новая, а это нагружает базу. Времени запилить проверку пока нет, поэтому пользуюсь той обработкой для поиска и замены дублей (Объект поиска: СвойстваОбъектов -> по наименованию)
21. Ewgen Kiselev (ewgen87) 8 19.09.16 15:33 Сейчас в теме
19.09 Сегодня заметил, что я.маркет переделал страницу. Как будет время, постараюсь переделать
22. Василий Пупкин (teomen_) 21.09.16 11:32 Сейчас в теме
Автор когда будет время поправить обработку ?
23. Ewgen Kiselev (ewgen87) 8 08.10.16 09:54 Сейчас в теме
(22) teomen_, Поправил обработку, работает с Internet Explorer 8 и 11 (на других не проверял)
24. Михаил Филимонов (NN2P) 207 16.01.17 10:59 Сейчас в теме
Евгений, большое спасибо за обработку.

УТ 10.3:

- при попытке разбора страницы, снова падает с ошибкой(см. рис.1);

- при изменении размера формы обработки кнопка "Яндекс -маркет" не на своём месте
Прикрепленные файлы:
25. Ewgen Kiselev (ewgen87) 8 16.01.17 14:21 Сейчас в теме
(24)
а страницы, снова падает с ошибк


Добрый день!
К сожалению времени катастрофически не хватает чтобы исправить, попробуйте зайти во вкладку на яндекс.маркет: "Характеристики" потом опять в "Описание" и нажать "Выполнить" и подождать до полной загрузки страницы
26. Ewgen Kiselev (ewgen87) 8 19.01.17 17:44 Сейчас в теме
(24)
Евгений, большое спасибо за обработку.

УТ 10.3:

- при попытке разбора страницы, снова падает с ошибкой(см. рис.1);

- при изменении размера формы обработки кнопка "Яндекс -маркет" не на своём месте
Прикрепленные файлы:


Попробуйте, закоментировать строку:
 //  НайденнаяСсылкаСтар = Найти(ВебСтраница1,"model");


и

 //Если НайденнаяСсылкаСтар > 0 тогда
  //     АдресСсылка1 = СтрЗаменить(АдресСсылка,"model.xml","model-spec.xml");
  //	   АдресСсылка2 = СтрЗаменить(АдресСсылка,"model-spec.xml","model.xml");
  //     ВерсияМаркета = Ложь;
  //КонецЕсли;
...Показать Скрыть


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

Форму ни разу не раздвигал, поэтому не обращал внимания