новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к материалу: Не занимайтесь парсингом HTML - это не надежно!

    • #1
    • 10.06.2013 12:32
    0
    Выполнять парсинг HTML-разметки страницы - последнее дело, ведь веб-сайты развиваются, генерируемая разметка может изменяться каждый день. Тогда стабильность работы вышей разработки будет очень низкой. Нужно использовать другие способы получения данных с веб-ресурсов.  Подробнее>>
    • #2
    • 10.06.2013 12:39
    • Отредактировано: 10.06.2013 12:41:15
    0
    Чтение = новый ЧтениеHTML;
    Чтение.ОткрытьФайл(ИмяФайла);
    ЧтениеДОМ = новый ПостроительDOM;
    ДОМ = ЧтениеДОМ.Прочитать(Чтение);
    Запись = новый ЗаписьDOM;
    хмл = новый ЗаписьXML;
    хмл.ОткрытьФайл("c:\1.xml");
    Запись.Записать(ДОМ.ЭлементДокумента ,хмл);
    хмл.Закрыть();

    преобразование = новый ПреобразованиеXSL;
    преобразование.ЗагрузитьИзСтроки(ПолучитьМакет("XSLTпреобразование").ПолучитьТекст());

    текстРез = преобразование.ПреобразоватьИзФайла("c:\1.xml");
    Чтение = новый ЧтениеXML;
    Чтение.УстановитьСтроку(текстРез);
    объект = ФабрикаXDTO.ПрочитатьXML(Чтение);
    На выходе - прочитанные данные.

    в макете XSLTпреобразование описываете что извлечь и куда положить.
    Плюсы решения - не надо править код если поменялась структура хмл, легко читаем, работает быстрее нежели разбор в цикле.
    Минусы - требует что бы HTML был валидным.


    Самому что ли начать писать статьи? а то с хмл гляжу работать хотят, но работают только как в 1сном букваре написано
    • #3
    • 10.06.2013 12:48
    0
    Бомбин Валентин Александрович
    Самому что ли начать писать статьи?

    Конечно, пишите )
    • #4
    • 10.06.2013 12:52
    0
    Бомбин Валентин Александрович
    Самому что ли начать писать статьи? а то с хмл гляжу работать хотят, но работают только как в 1сном букваре написано


    За замечание спасибо, но все это давно известно.

    И вопрос как-раз стоит в валидности XML-файла, который выдает YouTube. Несколько месяцев назад делал парсинг XML-ответа вашим способом для одного из сервисов Google. Удобно, но в один прекрасный момент обработка перестала работать. "Корпорация добра" выдавала особый ответ в виде XML-на выходе.

    Стабильность важнее удобства.
    Так что не ругайтесь))) Как говориться, на все есть причины =)))
    • #5
    • 10.06.2013 12:54
    0
    Балашов Роман (Администрация)
    Бомбин Валентин Александрович
    Самому что ли начать писать статьи?

    Конечно, пишите )


    Да, расскажите Валентин Александрович больше про XDTO-пакеты.
    По вашим комментариям видно, что тема хорошо известна.
    • #6
    • 10.06.2013 13:20
    0
    Невалидный хмл и ЧтениеХМЛ не прочтет. Так что проблема для обоих вариантов есть - и того что в статье, и того что я показал. Насчет не ругайтесь - зря вы так восприняли. Это наверное дополнение - показать что туже задачу можно решить другим методом. Как в школе на математике - квадратное уравнение можно решить так,, вот так и еще 10 способами. Выбирайте какой удобней.

    Насчет написать - хз.. сболтнул - и только теперь понял что не могу придумать простой задачи где все это объяснить. а на боевых задачах показывать - основное закроют детали.
    • #7
    • 10.06.2013 13:25
    0
    Бомбин Валентин Александрович
    Невалидный хмл и ЧтениеХМЛ не прочтет.


    Для решение задачи ЧтениеXML только и помогло. Возможно дело было в используемых тегах. Если нужно - могу покапаться в архиве обработок. Думаю еще осталось где-то.

    Бомбин Валентин Александрович
    Насчет не ругайтесь - зря вы так восприняли. Это наверное дополнение - показать что туже задачу можно решить другим методом.

    Да все ок. В основном вашим методом и пользуюсь.
    • #8
    • 10.06.2013 13:43
    0
    Не видя кода ошибки сложно сказать что было. Учитывая альтернативную одаренность разработчиков 1С могу предположить что ваш хмл содержал что-то похожее на xs:include с недоступным uir. ЧтениеХМЛ на это забивает.
    • #9
    • 12.06.2013 12:43
    0
    Бомбин Валентин Александрович
    Насчет написать - хз.. сболтнул - и только теперь понял что не могу придумать простой задачи где все это объяснить. а на боевых задачах показывать - основное закроют детали.

    А вы постарайтесь, интересно будет почитать поскольку работать с ХМЛ приходиться все больше и больше
    • #10
    • 12.06.2013 13:45
    0
    Ну хоть идею предложи что парсить? Вот примерно как вижу план статьи - парсим методом из букваря, юзаем просто фабрикухдто, делаем свою фабрику, делаем свою фабрику на лету, упрощаем жизнь и отбираем только нужные элементы сразу (использование xpath и xslt). Объединили все, сравнили с вариантом из учебника - поразились и поняли что хмл - это круто. Для этого требуется что бы источик данных был - а. большим и доступным, б. валидным, с. логичным
    • #11
    • 11.01.2014 10:48
    0
    Бомбин Валентин Александрович
    Ну хоть идею предложи что парсить?

    Статью читал давно, а задача появилась только сейчас. Предлагаю:
    Дано: goods.xml, который поставляется фирмой 1С для своих партнеров - это список товаров, которые продает 1С через свою сеть партнеров.
    Если нужно, могу выложить сам файл на я.диск - ничего секретного там нет.
    Файл удовлетворяет всем условиям - он большой и доступный, валидный, логичный.
    Сейчас парсинг выполняется через ЧтениеXML - несколько часов.
    Задача: отобрать и загрузить в таблицу товары определенной группы, причем загрузка должна происходить быстро.
    Обычные xml-редакторы не в состоянии этот файлик прожевать - пакет Oxygen может его только смотреть, XMLSpy - валится даже на попытке сделать Pretty Print или перейти в Grid. Само собой, используется обычная рабочая машина с 4Gb оперативки.
    • #12
    • 31.03.2014 12:28
    • Отредактировано: 31.03.2014 12:32:03
    0
    Пермитин Юрий Анатольевич
    Выполнять парсинг HTML-разметки страницы - последнее дело


    Из личной переписки с Яндекс-Маркетом:
    "Сейчас мы предоставляем доступ к контентному API только крупным региональным порталам, сайтам производителей товаров и контент-ресурсам. "

    Вот и думайте, какое дело последнее, а какое первое )
    • #13
    • 31.03.2014 12:30
    • Отредактировано: 31.03.2014 12:33:25
    0
    Яровенко Игорь Святославович
    Вот и думайте, какое дело последнее, а какое первое )


    Вы правы=) В таких случаях старый добрый парсинг только и спасает ))
    • #14
    • 31.03.2014 12:50
    • Отредактировано: 31.03.2014 12:50:31
    0
    Пермитин Юрий Анатольевич
    Вы правы=) В таких случаях старых добрый парсинг только и спасает ))

    Я заметил, что обычно после этого люди переходят к вопросу: что лучше для парсинга - xpath или объектная модель DOM =)

    DOM вроде бы надежнее и логичнее, но при смене дизайна нужно переделывать алгоритм. А в случае применения xpath, по идее, меняется только строка запроса, которую можно вынести в справочник и менять при необходимости без изменений в коде.
    PS высказанное является скорее теоретическими соображениями, чем практическим опытом.
    • #15
    • 31.03.2014 12:53
    0
    Яровенко Игорь Святославович
    Я заметил, что обычно после этого люди переходят к вопросу: что лучше для парсинга - xpath или объектная модель DOM =)


    Я предпочитаю XPATH в таких случаях, но сталкивался с проблемами...не помню уже какие правда.
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться