Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июл 2022, 12:49

Как получить информацию с сайта?

Автор ZSS, 09 окт 2017, 12:27

0 Пользователей и 1 гость просматривают эту тему.

ZSS

Добрый день необходима получить информацию с сайта, а точнее обработать таблицу с цена на запчасти по данной ссылке можно посмотреть таблицу http://www.autopiter.ru/goods/wht005437/vag/id38733338 как получить данную таблицу в 1с?

oleg-x

Нужно делать парсер сайта или возможно использовать готовое решение с дополнительными настройками/доработками
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

ZSS

Цитата: oleg-x от 09 окт 2017, 12:39
Нужно делать парсер сайта или возможно использовать готовое решение с дополнительными настройками/доработками
есть у тебя какой ни будь пример разработки парсера сайта?

oleg-x

У меня нет, но на ИнфоСтарте думаю найдете без проблем.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

ZSS

Цитата: oleg-x от 09 окт 2017, 13:52
У меня нет, но на ИнфоСтарте думаю найдете без проблем.
Ясно.Не могли бы вы подсказать из за чего может быть что цена на сайте одна а когда я обрабатываю у меня в 1с -ке цена везде 100 р. что я делаю не так?Код прилагаю.
&НаКлиенте
Функция СтруктураАдреса(Знач Адрес) Экспорт
   
   //Адрес = "http://www.autopiter.ru ";
    Адрес = СокрЛП(Адрес);
   
    // схема
    Схема = "";
    Позиция = Найти(Адрес, "://");
    Если Позиция > 0 Тогда
        Схема = Лев(Адрес, Позиция - 1);
        Адрес = Сред(Адрес, Позиция + 3);
    КонецЕсли;
       
    // строка соединения и путь на сервере
    СтрокаСоединения = Адрес;
    ПутьНаСервере = "";
    Позиция = Найти(СтрокаСоединения, "/");
    Если Позиция > 0 Тогда
        ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1);
        СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1);
    КонецЕсли;
   
    // информация пользователя и имя сервера
    МассивРазбора = СтрРазделить(СтрокаСоединения,"@");
    ИмяПользователя = ?(МассивРазбора.Количество() = 1,Неопределено,МассивРазбора
  • );
        ИмяСервера = ?(ИмяПользователя = Неопределено, СтрокаСоединения, МассивРазбора [1]);
       
        // пользователь и пароль
        Если ИмяПользователя <> Неопределено Тогда
             МассивРазбора = СтрРазделить(ИмяПользователя,":");
             ИмяПользователя = МассивРазбора
  • ;
             ПарольПользователя = ?(МассивРазбора.Количество() = 1,Неопределено,МассивРазбора [1]);
        КонецЕсли;
       
        // имя сервера и пароль
        МассивРазбора = СтрРазделить(ИмяСервера,":");
        ИмяСервера = МассивРазбора
  • ;
        Порт = ?(МассивРазбора.Количество() = 1,Неопределено, Число(МассивРазбора [1]));
           
        Результат = Новый Структура;
        Результат.Вставить("Схема", Схема);
        Результат.Вставить("Логин", ИмяПользователя);
        Результат.Вставить("Пароль", ПарольПользователя);
        Результат.Вставить("ИмяСервера", ИмяСервера);
        Результат.Вставить("Порт", Порт);
        Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
        Возврат Результат;
    КонецФункции

    &НаКлиенте
    Функция ПолучитьСтраницуВОбъектDOM(Знач Адрес)
        Адрес = СтруктураАдреса(Адрес);   
        Соединение = Новый HTTPСоединение(Адрес.ИмяСервера, Адрес.Порт);
        ВебЗапрос = Новый HTTPЗапрос(Адрес.ПутьНаСервере);
        Попытка
            Результат = Соединение.Получить(ВебЗапрос);
        Исключение
            Сообщить("Ошибка соединения");
            ВызватьИсключение;
        КонецПопытки;
        Ответ = Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
        Чтение = Новый ЧтениеHTML;
        Чтение.УстановитьСтроку(Ответ);
        ОбъектыDOM = Новый ПостроительDOM;
        Возврат ОбъектыDOM.Прочитать(Чтение);
    КонецФункции

    &НаКлиенте
    Процедура ОбновляемИнформацию()
    СтраницаПартнер = ПолучитьСтраницуВОбъектDOM("http://www.autopiter.ru/goods/1195042BO/wai/id20906779");
            Таблица = СтраницаПартнер.ПолучитьЭлементыПоИмени("tbody");
          СтрокиТаблицы = Таблица[2].ПолучитьЭлементыПоИмени("tr");
           Для каждого Строка Из СтрокиТаблицы Цикл
               ПоляТаблицы = Строка.ПолучитьЭлементыПоИмени("td");
               Для каждого Поле Из ПоляТаблицы Цикл
                   Если Поле.ПолучитьАтрибут("class") = "p"  Тогда
                      Сообщить("Цена "+ Поле.ТекстовоеСодержимое);      
                КонецЕсли;
                Если Поле.ПолучитьАтрибут("class") = "g"  Тогда
                      Сообщить("Бренд "+ Поле.ТекстовоеСодержимое);   
                КонецЕсли;
                Если Поле.ПолучитьАтрибут("class") = "y"  Тогда
                      Сообщить("Есть в наличии 1 нет в наличии 0 "+ Поле.ТекстовоеСодержимое);   
                КонецЕсли;
                Если Поле.ПолучитьАтрибут("class") = "d"  Тогда
                      Сообщить("Дней "+ Поле.ТекстовоеСодержимое);   
                   КонецЕсли;
                   КонецЦикла;
       КонецЦикла;
    КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск