Доброго времени суток! Хочу научиться парсить сайт. Взял для примера вот этот сайт [необходимо зарегистрироваться для просмотра ссылки].
Парсю главную страницу вот так:
ЧтениеХТМЛ = Новый ЧтениеHTML;
ПостроительДОМ = Новый ПостроительDOM;
//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(Адрес, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");
ИмяФайла = КаталогЗагрузкиВременныхФайлов + "\catalog\" + ПреобразуемоеИмяФайла + ".html";
ЗапросХТТП = Новый HTTPЗапрос;
ЗапросХТТП.УстановитьТелоИзСтроки(Адрес);
//Загружаем нужную нам страницу в каталог
Соединение.Получить(ЗапросХТТП, ИмяФайла);
//Начинаем чтение нашего файла
ЧтениеХТМЛ.ОткрытьФайл(ИмяФайла, "UTF-8");
//Загружаем всю структуру документа в DOM
ДокументХТМЛ = ПостроительДОМ.Прочитать(ЧтениеХТМЛ);
//Получаем все элементы DIV
ЭлементыКаталога = ДокументХТМЛ.ПолучитьЭлементыПоИмени("DIV");
СписокКаталогов.Очистить();
//Находим в них нужный нам блок, содержащий ссылки на подкаталоги
Для Каждого ЭлементКаталога из ЭлементыКаталога Цикл
ОбработкаПрерыванияПользователя();
Если ЭлементКаталога.ИмяКласса = "catalog-list" Тогда
ЭлементыA = ЭлементКаталога.ПолучитьЭлементыПоИмени("A");
//Нашли, собираем из него все ссылки (элементы А)
Если ЭлементыA.Количество() > 0 Тогда
Для Каждого ЭлементA из ЭлементыA Цикл
Если ЭлементA.ТекстовоеСодержимое <> "" Тогда
НоваяСтрока = СписокКаталогов.Добавить();
НоваяСтрока.ИмяКаталога = ЭлементA.ТекстовоеСодержимое;
НоваяСтрока.СсылкаНаСтраницу = СтрЗаменить(ЭлементA.Гиперссылка,"http://","");
КонецЕсли;
КонецЦикла;
Иначе
//Если ссылок не найдено, значит подкаталогов нет и это конечный подкаталог
//Добавляем его в нашу табличную часть
НоваяСтрока = СписокКаталогов.Добавить();
НоваяСтрока.ИмяКаталога = ЭлементA.ТекстовоеСодержимое;
НоваяСтрока.СсылкаНаСтраницу = СтрЗаменить(ЭлементA.Гиперссылка,"http://","");
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вот что получается:
Далее на форме есть кнопка, показать товары группы каталога. Код кнопки:
Процедура ПоказатьТоварыСВыбраннойГруппыНажатие(Элемент)
СписокТоваров.Очистить();
ТекСтрокаСписокКаталогов = ЭлементыФормы.СписокКаталогов.ТекущаяСтрока;
ГруппаКаталога = ТекСтрокаСписокКаталогов.ИмяКаталога;
Если ГруппаКаталога = "Дорожные сумки" Тогда
ПропарситьСтраницуДорожныеСумки(ТекСтрокаСписокКаталогов.СсылкаНаСтраницу);
ИначеЕсли ГруппаКаталога = "" Тогда
ИначеЕсли ГруппаКаталога = "" Тогда
ИначеЕсли ГруппаКаталога = "" Тогда
ИначеЕсли ГруппаКаталога = "" Тогда
ИначеЕсли ГруппаКаталога = "" Тогда
КонецЕсли;
КонецПроцедуры
Далее процедура которая парситу страницу с группой товара выбранной в ТЧ, вот код:
Процедура ПропарситьСтраницуДорожныеСумки(Адрес)
ЧтениеХТМЛ = Новый ЧтениеHTML;
ПостроительДОМ = Новый ПостроительDOM;
//Генерируем имя файла на диске, в который запишется страница сайта
ПреобразуемоеИмяФайла = СтрЗаменить(Адрес, "/", "_");
ПреобразуемоеИмяФайла = СтрЗаменить(ПреобразуемоеИмяФайла,":","_");
ИмяФайла = КаталогЗагрузкиВременныхФайлов + "\catalog\" + ПреобразуемоеИмяФайла + ".html";
ЗапросХТТП = Новый HTTPЗапрос;
ЗапросХТТП.УстановитьТелоИзСтроки(Адрес);
//Загружаем нужную нам страницу в каталог
Соединение.Получить(ЗапросХТТП, ИмяФайла);
//Начинаем чтение нашего файла
ЧтениеХТМЛ.ОткрытьФайл(ИмяФайла, "UTF-8");
//Загружаем всю структуру документа в DOM
ДокументХТМЛ = ПостроительДОМ.Прочитать(ЧтениеХТМЛ);
//Получаем все элементы DIV
ЭлементыСтраницы = ДокументХТМЛ.ПолучитьЭлементыПоИмени("DIV");
СписокТоваров.Очистить();
//Находим в них нужный нам блок, содержащий ссылки на подкаталоги
Для Каждого ЭлементСтраницы из ЭлементыСтраницы Цикл
ОбработкаПрерыванияПользователя();
Если ЭлементСтраницы.Идентификатор = "items-container" Тогда //Элемент с товарами
ЭлементыA = ЭлементСтраницы.ПолучитьЭлементПоИмени("A");
//Нашли, собираем из него все ссылки (элементы А)
Если ЭлементыA.Количество() > 0 Тогда
Для Каждого ЭлементA из ЭлементыA Цикл
Если ЭлементA.ТекстовоеСодержимое <> "" Тогда
НоваяСтрока = СписокТоваров.Добавить();
НоваяСтрока.Артикул = ЭлементA.ТекстовоеСодержимое;
НоваяСтрока.Наименование = ЭлементA.Гиперссылка;
НоваяСтрока.СсылкаНаТовар = ЭлементA.Гиперссылка;
КонецЕсли;
КонецЦикла;
Иначе
//Если ссылок не найдено, значит подкаталогов нет и это конечный подкаталог
//Добавляем его в нашу табличную часть
НоваяСтрока = СписокТоваров.Добавить();
НоваяСтрока.Артикул = ЭлементA.ТекстовоеСодержимое;
НоваяСтрока.Наименование = ЭлементA.Гиперссылка;
НоваяСтрока.СсылкаНаТовар = ЭлементA.Гиперссылка;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Сам вопрос, вот когда уже начинаю парсить страницу с "Дорожные сумки", то получается что адрес ее вроде передаю, а сохраняется не та страница, сохраняется главная страница....ПОЧЕМУ? ПОМОГИТЕ!
Сообщение отредактировал Vofka - 22.07.15, 14:43