Имя: Пароль:
1C
 
как получить цены с сайта?
0 ZSSSP
 
16.10.17
13:23
Есть пример кода но из ответа с сайта не могу вытащить цены
WinHttp = Новый COMОбъект("MSXML2.XMLHTTP.6.0");
WinHttp.Open("GET", "http://www.autopiter.ru/goods/wht005437";, 0);
WinHttp.Send();
ТекстОтвета = WinHttp.ResponseText();
Подскажите что нужно сделать чтобы добраться до цен?
1 vde69
 
16.10.17
13:25
цены чего?

покажи как ты добираешся до номенклатуры и я подскажу как добратся до цен
2 ZSSSP
 
16.10.17
13:37
Обхожу текстответа циклом, но дело в том что даже в тексте ответа нет цен. Как их получить?
3 Лефмихалыч
 
16.10.17
13:49
А цен там и правда нет. Они, видимо, каким-то js-ом подтягиваются в DOM после загрузки страницы. Как раз против таких хитрожопых, типа ТС, которые на халяву каталог хотят уравть:

https://i.imgur.com/hS7V52T.png
4 rasta
 
16.10.17
13:50
1) по WinHttp.Open("GET", "http://www.autopiter.ru/goods/wht005437";,, 0)
получаегь список товаров и та есть ссылка на товар : href="/goods/wht005437/vag/id38733338
2) по WinHttp.Open("GET", "http://www.autopiter.ru/goods/wht005437/vag/id38733338";,, 0); получаешь карточку товара, там уже есть
<div class="upi-price">
<span>173,28</span>
</div>

наверно как-то так )
5 ZSSSP
 
16.10.17
14:24
только через ссылку можно достать цену? а саму ссылку получать при помощи перебора строк?
6 ttk
 
16.10.17
14:29
7 Юрий Лазаренко
 
16.10.17
14:51
(0) Открывать из 1С IE через OLE, программно открывать в нем нужную страницу, дожидаться загрузки, получать DOM и перебирать его. Медленно и ресурсоемко.
8 rasta
 
16.10.17
14:55
(6) а как нашел эту страничку если не секрет. на главной и в хелпе ничего такого не увидел (
9 ttk
 
16.10.17
14:59
(8)
Загружал от них что то,
если залогиниться, то там где то будет в интерфейсе
10 ZSSSP
 
16.10.17
15:06
http://service.autopiter.ru/price.asmx  как можно это использовать в 1с ?пока не понимаю
11 asady
 
16.10.17
15:08
(10) там же написано
формируй post запрос
там в примерах приведены тексты пост запросов и ответы на них
12 ZSSSP
 
16.10.17
15:50
POST запросом он возвращает такой же ответ что и GET цены нет.
13 ttk
 
16.10.17
15:55
потому что цены могут быть разными, надо авторизоваться
14 Крэкпэк
 
16.10.17
16:29
(3) Что за софт на картинке ?
15 ttk
 
16.10.17
16:44
(14) на SoapUi очень похоже
16 ZSSSP
 
17.10.17
08:27
Не получается отправить post запрос на сайт подскажите в чем может быть проблема?
АдресСервера ="http://www.autopiter.ru";;
    АдресСтраницыАвторизации = "http://www.autopiter.ru";;
    АдресСтраницыРассылки = "http://www.autopiter.ru/goods/wht005437";;
    Логин = "hk05c6z";
    Пароль = "Qwerty123";
    // Убрать http-протоколы из доменного имени

    АдресСервера = СтрЗаменить(АдресСервера, "http://";, "");

    АдресСервера = СтрЗаменить(АдресСервера, "https://";, "");

    //АдресСервера = СтрЗаменить(АдресСервера, "/", "");

    

    Соединение = Новый HTTPСоединение(АдресСервера);

    

    // Создать файлы запроса и получения

    ВремКаталог = КаталогВременныхФайлов() + "tempParser";

    СоздатьКаталог(ВремКаталог);

    УдалитьФайлы(ВремКаталог,"*.*");

    

    ИмяВыходногоФайла = "" + ВремКаталог + "\answer.html";

    ИмяФайлаОтправки = "" + ВремКаталог + "\request.html";

    

    // Подготовить файл для POST запроса

    POSTПараметры = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,, Истина, Символы.ПС);

    POSTПараметры.Записать("user_name=" + Логин + "&user_password=" + Пароль + "&action=do_enter");

    POSTПараметры.Закрыть();



    // Определить заголовки POST, используя алгоритм "application/x-www-form-urlencoded"

    POSTЗаголовки = Новый Соответствие();

    POSTЗаголовки.Вставить("POST "+АдресСтраницыАвторизации+" HTTP/1.1");

    POSTЗаголовки.Вставить("Host", АдресСервера);

    POSTЗаголовки.Вставить("Referer", "http://";+АдресСервера);

    POSTЗаголовки.Вставить("Connection", "keep-alive");

    POSTЗаголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");



    // Отправляем POST запрос

    Попытка

        ОтветHTTP = Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, АдресСтраницыАвторизации, ИмяВыходногоФайла, POSTЗаголовки);

    Исключение

        Сообщить("Неудачная попытка соединения с " + АдресСервера + ": " + ОписаниеОшибки());

        Возврат;

    КонецПопытки;

    

    // Получим ресурс на который нас перебросил сервер

    Если ОтветHTTP.КодСостояния = 302 Тогда

        АдресСтраницы = ОтветHTTP.Заголовки["Location"];

    КонецЕсли;

    

    // Определить заголовки GET, с куками полученными от сервера

    GETЗаголовки = Новый Соответствие();

    GETЗаголовки.Вставить("Cookie", ОтветHTTP.Заголовки["Set-Cookie"]);

    GETЗаголовки.Вставить("Connection", "keep-alive");

    

    // Получаем страницу, указывая куки

    ОтветHTTP = Соединение.Получить(АдресСтраницыРассылки, ИмяВыходногоФайла, GETЗаголовки);
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн