gifts2017

Пример парсинга web-страницы, поиск ссылки на картинку из страницы по атрибуту

Опубликовал Юрий Семенчук (MsDjuice) в раздел Программирование - Практика программирования

На примере сайта brain.com.ua покажу, как можно получить ссылку на картинку из веб-страницы.

Поступило задание на парсинг страницы сайта. Например, нам нужна ссылка на основное фото. Для начала, узнаем имя этого атрибута. Если вы используете браузер Мозилла (в других, по-другому), достаточно в открытой странице на элементе вызвать контекстное меню и выбрать пункт Inspect element:


После этого в появившимся окне спотрим, как называется текущий атрибут. В нашем случае, "large_picture_container":

Дальше пишем простенький код на примере нашего сайта:

Функция Парсинг(Ссылка)
	
	ЧтениеHTML = Новый ЧтениеHTML;
    ЧтениеHTML.ОткрытьФайл(Ссылка);
     
    ПостроительDOM = Новый ПостроительDOM;
    ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
    
    ЭлементыDOM = ДокументHTML.ПолучитьЭлементыПоИмени("span");
	
	СсылкаВрем = "";
	Для Каждого ЭлементDOM Из ЭлементыDOM Цикл
		Если ЭлементDOM.ИмяКласса = "large_picture_container" Тогда
			Для каждого ДочУзл Из ЭлементDOM.ДочерниеУзлы Цикл
				Если ДочУзл.ИмяУзла = "img" Тогда
					СсылкаВрем = ДочУзл.Источник;
					Возврат (ЗначениеЗаполнено(СсылкаВрем), "http://brain.com.ua" + СсылкаВрем ,"");
				КонецЕсли;	
			КонецЦикла;
			СсылкаВрем = ЭлементDOM		
		КонецЕсли;
	КонецЦикла;
	
	Возврат "";
	
КонецФункции

Скачать файлы

Наименование Файл Версия Размер
СсылкаНаФотоПоАтрибуту.epf 5
.epf 7,00Kb
04.08.15
5
.epf 7,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Яков Коган (Yashazz) 04.08.15 13:55
Верно. Подобное действие является одним из множества кирпичиков, составляющих парсинг сайта. Только не очень понятно, зачем ради этого отдельную статью делать)
Ну и советую при не очень богатом разнообразии имён тегов использовать XPath, чтоб не промахнуться.
cool.vlad4; odineskin2; +2 Ответить 2
2. Ийон Тихий (cool.vlad4) 04.08.15 15:13
(1) Yashazz, а я как в 1С делать xpath запросы к html , который с точки зрения xml может быть невалидным? (достроив до валидного, но есть ли готовый код?)
(0) в xpath это будет //img[@class='large_picture_container']/@src (можно еще не "=" а contain использовать , а если есть верояность , что тэг не всегда img , то вместо img : //*[@class='large_picture_container']/@src )
3. Юрий Семенчук (MsDjuice) 05.08.15 10:30
(1) Yashazz, Отдельная статья для таких как я. Дали задания и не знаешь с чего начать. А начать хотя бы с этого.
4. Яков Коган (Yashazz) 06.08.15 13:16
(2) cool.vlad4, знаешь, я внаглую нормализую узлы DOM, загоняю их копированием разными способами в xml и парсю, вроде прокатывает. Ни разу на невалидность не попадал, хотя, может, мало экспериментировал. Посмотри методы, работающие со всяким пересовыванием узлов туда-сюда.
cool.vlad4; +1 Ответить