Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как отобразить все товары на странице?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kosalex
Добрый день! Все тот же сайт необходимо зарегистрироваться для просмотра ссылки, есть на этой странице счетчик количества товара на странице, как его обработать при парсинге этой странице чтобы показывались все товары?
Vofka
kosalex, задавайте более конкретные вопросы. В ваших темах по парсингу этого сайта никто не отвечает, потому что ваш вопрос сводится "вот код, сделайте чтоб работало". Но за спасибо никто не хочет вникать в вашу задачу и делать её за вас. Поэтому для увеличения шансов на какой-то ответ советую задавать более конкретные вопросы.
kosalex
Цитата(Vofka @ 23.07.15, 12:06) необходимо зарегистрироваться для просмотра ссылки
kosalex, задавайте более конкретные вопросы. В ваших темах по парсингу этого сайта никто не отвечает, потому что ваш вопрос сводится "вот код, сделайте чтоб работало". Но за спасибо никто не хочет вникать в вашу задачу и делать её за вас. Поэтому для увеличения шансов на какой-то ответ советую задавать более конкретные вопросы.



Плохо что так понимаете "вот код, сделайте чтобы работало". Я привожу код для того чтобы кто то смог подсказать, может я где то не так пишу код. А не для того чтобы кто то за меня что то делал. :-)

Конкретный вопрос, как средствами 1С получить все товары на этой странице необходимо зарегистрироваться для просмотра ссылки? У меня получается получить список товаров ограниченный счетчиком. Другими словами что нужно сделать чтобы загрузилась полностью вся страница?
python
Если я правильно понимаю, то страница формируется сервером, Вы лишь читаете результат работы его - данные со страницы.
Вы хотите прочитать данные со страницы, которых там нет, или из 1С управлять сервером, формирующим по запросу браузера страницы/фреймы?
kosalex
Цитата(python @ 23.07.15, 12:29) необходимо зарегистрироваться для просмотра ссылки
Если я правильно понимаю, то страница формируется сервером, Вы лишь читаете результат работы его - данные со страницы.
Вы хотите прочитать данные со страницы, которых там нет, или из 1С управлять сервером, формирующим по запросу браузера страницы/фреймы?



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

ЧтениеХТМЛ = Новый ЧтениеHTML; 
        ПостроительДОМ = Новый ПостроительDOM;
        
        //Генерируем имя файла на диске, в который запишется страница сайта
        ПреобразуемоеИмяФайла = СтрЗаменить(Адрес, "/", "_");
        ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");
        
        ИмяФайла = КаталогЗагрузкиВременныхФайлов + "\catalog\" + ПреобразуемоеИмяФайла + ".html";

        //Загружаем нужную нам страницу в каталог
        Соединение.Получить(Адрес, ИмяФайла);
                
        //Начинаем чтение нашего файла
        ЧтениеХТМЛ.ОткрытьФайл(ИмяФайла, "UTF-8");
        //Загружаем всю структуру документа в DOM
        ДокументХТМЛ = ПостроительДОМ.Прочитать(ЧтениеХТМЛ);
        
        //Получаем все элементы DIV
        ЭлементыСтраницы = ДокументХТМЛ.ПолучитьЭлементыПоИмени("DIV");


получаю копию страницы у себя на диске...но в ней не все товары...
logist
Цитата(kosalex @ 23.07.15, 12:13) необходимо зарегистрироваться для просмотра ссылки
Конкретный вопрос, как средствами 1С получить все товары на этой странице

Вопрос скорее не по теме, но всё же: почему нельзя договориться с сайтом что бы он по каком-то http-запросу отдавал информацию в уже структурированном формате (xml например)?
sava1
Цитата(kosalex @ 23.07.15, 12:39) необходимо зарегистрироваться для просмотра ссылки
получаю копию страницы у себя на диске...но в ней не все товары...

Нужно смотреть как формируется пост с выбранным Все.
kosalex
Цитата(sava1 @ 23.07.15, 13:26) необходимо зарегистрироваться для просмотра ссылки
Нужно смотреть как формируется пост с выбранным Все.

Смотрел, ничего такого за что можно зацепиться не увидел...

Есть мысль собирать урлы с навигационных переключателей (Страница 1,2,3....), т.е. если они есть, взять с них их урлы и потом переходя по каждой навигационной ссылке парсить страницу.

Можно кто то увидел что то другое?))

Цитата(logist @ 23.07.15, 13:14) необходимо зарегистрироваться для просмотра ссылки
Вопрос скорее не по теме, но всё же: почему нельзя договориться с сайтом что бы он по каком-то http-запросу отдавал информацию в уже структурированном формате (xml например)?


Можно попробовать договориться)
DartRomanius
1. Сделать то что хотим получить от сайта в "ручном режиме". Потренировать, добиться определенного результата.
2. Делать уже в 1С-ке парсинг. Так-как понятен алгоритм взаимодействия с сайтом.

ЗЫ: Сайт может использовать там JavaScript какой-нибудь, или еще что-то. Вообщем делаем пункт 1, а после уже приступаем к п.2. smile.gif

Vofka
Цитата(logist @ 23.07.15, 13:14) необходимо зарегистрироваться для просмотра ссылки
Вопрос скорее не по теме, но всё же: почему нельзя договориться с сайтом что бы он по каком-то http-запросу отдавал информацию в уже структурированном формате (xml например)?

Потому что скорее всего это слив инфы с чьего-то сайта smile.gif
sava1
Мож-быть, скачать в офф-лайн?
kosalex
Цитата(sava1 @ 23.07.15, 14:58) необходимо зарегистрироваться для просмотра ссылки
Мож-быть, скачать в офф-лайн?


весь сайт?))

Цитата(Vofka @ 23.07.15, 14:48) необходимо зарегистрироваться для просмотра ссылки
Потому что скорее всего это слив инфы с чьего-то сайта smile.gif



Да, это слив инфы, но хозяин сайта не запрещает этого делать :-) А наоборот дает добро и не маркирует картинки.

Написал им, может получиться без тупого парсинга)) а чисто чтение файла)
logist
Цитата(kosalex @ 23.07.15, 15:36) необходимо зарегистрироваться для просмотра ссылки
весь сайт?))

Знаете, 15 лет назад были специальные проги по скачиванию сайтов, это было модно))
kosalex
Цитата(logist @ 23.07.15, 19:14) необходимо зарегистрироваться для просмотра ссылки
Знаете, 15 лет назад были специальные проги по скачиванию сайтов, это было модно))


))мода имеет такую особенность - она повторяется))
kosalex
Доброго времени суток! Все пытаюсь получить страницу со ВСЕМИ товарами.

Отправляю на сервер вот такой запрос:

СтрокаПараметров =  "Host: " + АдресСайта + Символы.ПС + 
                    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"  + Символы.ПС +
                    "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"  + Символы.ПС +
                    "Accept-Encoding: gzip, deflate"  + Символы.ПС +
                    "Referer: " + АдресСтраницы + Символы.ПС +
                    "Cookie: _ga=GA1.3.1844647940.1435661095; osCsid=9528cb3e119a966ae43edcdc78062fa5; _gat=1"  + Символы.ПС +
                    "Connection: keep-alive"  + Символы.ПС +
                    "Content-Type: application/x-www-form-urlencoded" + Символы.ПС +
                    "Content-Length: 8" + Символы.ПС +  
                    "onpage: 9"  + Символы.ПС;

//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(АдресСтраницы, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");

ФайлСтраницы =  КаталогЗагрузкиВременныхФайлов + "\catalog\dorognie\" + ПреобразуемоеИмяФайла + ".html";

HTTPЗапрос = Новый HTTPЗапрос(АдресСтраницы);
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаПараметров, КодировкаТекста.UTF8);

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


Попытка
    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос, ФайлСтраницы);
Исключение
    Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;


Страница сохраняется, но в ней отображается только 36 товаров, а нужно все. Смотрел браузером, параметры передаются onpage:36.
Что делаю не правильно?
Petre
Передавайте больше 36.
kosalex
Цитата(Petre @ 12.08.15, 10:22) необходимо зарегистрироваться для просмотра ссылки
Передавайте больше 36.



передаю и меньше и больше, все равно сохраняется только с 36 ((

Пробую и так, результат один, только 36 товаров на странице...
ТелоЗапроса = "onpage:1000"; 

ФайлЗапроса = ПолучитьИмяВременногоФайла("txt");
ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.УстановитьТекст(ТелоЗапроса);
ТекстовыйФайл.Записать(ФайлЗапроса,КодировкаТекста.UTF8);

ФайлОтправки = Новый Файл(ФайлЗапроса);

РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());

//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(АдресСтраницы, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");

ФайлРезультата =  КаталогЗагрузкиВременныхФайлов + "\catalog\dorognie\" + ПреобразуемоеИмяФайла + ".html";


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

ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");

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

Попытка
    Ответ = HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, АдресСтраницы, ФайлРезультата, ЗаголовокHTTP);
Исключение
    Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
kosalex
Вот какой запрос отсылается на сервер:

POST необходимо зарегистрироваться для просмотра ссылки
Content-Type: application/x-www-form-urlencoded
onpage=10000

Пытаюсь собрать что то такое же:
ТелоЗапроса = "onpage=1000" + Символы.ПС + Символы.ВК;

//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(АдресСтраницы, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");

ФайлРезультата =  КаталогЗагрузкиВременныхФайлов + "\catalog\dorognie\" + ПреобразуемоеИмяФайла + ".html";

// Для того, чтобы установить заголовки
// POST-запроса создадим соответствие
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");

ХТТПЗапрос = Новый HTTPЗапрос;
ХТТПЗапрос..УстановитьТелоИзСтроки(ТелоЗапроса);
ХТТПЗапрос.Заголовки = ЗаголовокHTTP;
ХТТПЗапрос.АдресРесурса = АдресСтраницы;

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

Попытка
    Ответ = HTTPСоединение.ОтправитьДляОбработки(ХТТПЗапрос, ФайлРезультата);
Исключение
    Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;


НЕ получается.....плиз, ХЕЛП!

Не работает и так.....
ТелоЗапроса = "POST http://mprestige.com.ua/dorozhnye-sumki-c-316.html"  + Символы.ПС +
              //"Content-Type: application/x-www-form-urlencoded" + Символы.ПС  +                
              "onpage=10000";


//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(АдресСтраницы, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");

ФайлРезультата =  КаталогЗагрузкиВременныхФайлов + "\catalog\dorognie\" + ПреобразуемоеИмяФайла + ".html";

// Для того, чтобы установить заголовки
// POST-запроса создадим соответствие
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");


ХТТПЗапрос = Новый HTTPЗапрос;
ХТТПЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
ХТТПЗапрос.Заголовки = ЗаголовокHTTP;
ХТТПЗапрос.АдресРесурса = АдресСтраницы;

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

Попытка
    Ответ = HTTPСоединение.ОтправитьДляОбработки(ХТТПЗапрос, ФайлРезультата);
Исключение
    Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
logist
Строка адреса для Post попробуйте сделать так: _http://mprestige.com.ua/dorozhnye-sumki-c-316.html?onpage=1000
kosalex
УРАААА!!!Вот работающий код:
ТелоЗапроса = "&onpage=10000";

//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(АдресСтраницы, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");

ФайлРезультата =  КаталогЗагрузкиВременныхФайлов + "\catalog\dorognie\" + ПреобразуемоеИмяФайла + ".html";

// Для того, чтобы установить заголовки
// POST-запроса создадим соответствие
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");

ХТТПЗапрос = Новый HTTPЗапрос;
ХТТПЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
ХТТПЗапрос.Заголовки = ЗаголовокHTTP;
ХТТПЗапрос.АдресРесурса = АдресСтраницы;


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

Попытка
    Ответ = HTTPСоединение.ОтправитьДляОбработки(ХТТПЗапрос, ФайлРезультата);
Исключение
    Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;


Проблема была в этом значке "&".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.