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

Обработки - Обработка справочников

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

С разрешения ltfriend выкладываю модификацию обработки //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
41
.epf 6.1 19,70Kb 41 Скачать

См. также

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

Парсер характеристик яндекс.маркет(рабочая версия)
5. Ewgen Kiselev (ewgen87) 9 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) 9 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) 9 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) 9 13.02.15 23:31 Сейчас в теме
Изменилась разметка в яндекс.маркет ( буду стараться переделать
12. Ewgen Kiselev (ewgen87) 9 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) 9 04.03.15 13:38 Сейчас в теме
(13) harlag, Для этого нужно в конфигурацию встроить внешнюю обработку. В справочник Номенклатура на форме "Форма элемента" добавить кнопку. В обработчик событий кнопки добавить

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


15. Ewgen Kiselev (ewgen87) 9 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) 9 14.05.15 10:32 Сейчас в теме
UPD 14.05
Яндекс-маркет перешел на https. Для поиска по названию номенклатуры нужно в процедуре "ПриОткрытии()" заменить строку на:
ЭтаФорма.ЭлементыФормы.АдресСсылки.Значение = "https://market.yandex.ru/search.xml?&text=" + Номенклатура.Наименование;
17. Ewgen Kiselev (ewgen87) 9 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) 9 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) 9 07.09.16 14:50 Сейчас в теме
(19) graf1976, Сегодня проверял - работает, правда желательно пользоваться совместно с обработкой http://infostart.ru/public/14986/ (бесплатная). Так как тут в этой обработке нет проверки на существование такой-же характеристики в реестре, поэтому создается новая, а это нагружает базу. Времени запилить проверку пока нет, поэтому пользуюсь той обработкой для поиска и замены дублей (Объект поиска: СвойстваОбъектов -> по наименованию)
21. Ewgen Kiselev (ewgen87) 9 19.09.16 15:33 Сейчас в теме
19.09 Сегодня заметил, что я.маркет переделал страницу. Как будет время, постараюсь переделать
22. Василий Пупкин (teomen_) 21.09.16 11:32 Сейчас в теме
Автор когда будет время поправить обработку ?
23. Ewgen Kiselev (ewgen87) 9 08.10.16 09:54 Сейчас в теме
(22) teomen_, Поправил обработку, работает с Internet Explorer 8 и 11 (на других не проверял)
24. Михаил Филимонов (NN2P) 215 16.01.17 10:59 Сейчас в теме
Евгений, большое спасибо за обработку.

УТ 10.3:

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

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


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

УТ 10.3:

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

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


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


и

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


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

Форму ни разу не раздвигал, поэтому не обращал внимания
27. Василий Пупкин (teomen_) 31.03.17 10:58 Сейчас в теме
Добрый день, УТ 10.3 постоянна начала выпадать ошибка :

Ошибка при разборе HTML страницы! Возможно, адрес указан не верно или изменилась разметка страницы источника.

Манипуляция : " попробуйте зайти во вкладку на яндекс.маркет: "Характеристики" потом опять в "Описание" и нажать "Выполнить" и подождать до полной загрузки страницы " не помогает...
Оставьте свое сообщение