Форум сайта python.su
Хочу решить такую задачу:
Превратить HTML в XML (FB2).
Казалось бы… беру понравившийся парсер… и бегу по тегам рекурсивно, попутно формируя XML -ку.
Но XML-ки разрешенная структуру довольно строгая. В каком-то месте можно вставить определненные теги, в каких-то нет.. (все схемой определяется).
Например, если родительский тег такой, а надродительский еще такой… то картинку можно, а если надродительский тег другой - то уже нельзя.
Т.е. XML-ка более ограниченная, чем HTML-ка.
Никто не подскажет - как такие штуки решаются (принимаются любые предложения)?
Отредактировано (Авг. 24, 2008 22:57:07)
Офлайн
Переводить в промежуточный формат (например, не такой строгий XML) а уже из него формировать XML.
На самом деле - задача сложная. HTML - формат допускающий разное трактование и написание. Переводить его в строгую структуру врятли получится без конфликтов. Получится либо избыточно, либо ущербно.
Офлайн
html5lib, если я правильно понял задачу.
..bw
Офлайн
Ferromanхм. Мне кажется, задача от этого не изменится.
Переводить в промежуточный формат (например, не такой строгий XML) а уже из него формировать XML.
FerromanЯ выбрал вариант - ущербно.
На самом деле - задача сложная. HTML - формат допускающий разное трактование и написание. Переводить его в строгую структуру врятли получится без конфликтов. Получится либо избыточно, либо ущербно.
bwА в каком качестве ее использовать? Я слышал про нее, как пожалуй наилучший из парсеров HTML в DOM, tree или soap структуры.
html5lib, если я правильно понял задачу.
Отредактировано (Авг. 25, 2008 01:14:44)
Офлайн
Мне кажется, задача от этого не изменится.Ну почему же? В такой задаче основная проблема - учесть все исключения. Это гораздо проще с переводом сначала в буферный XML. И ошибки ловить легче. И сразу видны моменты “двузначности” и “неопределённости”.
Офлайн
shizaВ качестве валидирующего парсера HTML.
А в каком качестве ее использовать?
Офлайн
Ferroman Да. Чем больше думаю, тем больше мне кажется что это имеет смысл.
bw Скорость мне не критична. Но. Я привык к BeautifulSoup интерфейсу. А html5lib пока еще в некоторых случаях вылетает - когда парсишь в BeautifulSoup. Поэтому сейчас сначала прогоняю через html5lib - для корректировки кривых html (как корректор - ему нет равных). А потом расапрсиваю результат нативным BeautifulSoup.
Офлайн
Я тоже сначала работал с супом, но при переходе на html5lib пришлось учить xpath. Выучил, проблем не испытываю, очень мощная вещь.
p.s. Тренироваться в xpath удобно, используя специальные плагины к Firebird (я использую xpather).
..bw
Отредактировано (Авг. 26, 2008 16:47:55)
Офлайн
В общем проблема была в подходящем алгоритме, и я его нашел. Если у кого возникнет похожая задача - распишу подробно.
Офлайн