Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2008 22:52:28

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

HTML в валидный XML

Хочу решить такую задачу:
Превратить HTML в XML (FB2).
Казалось бы… беру понравившийся парсер… и бегу по тегам рекурсивно, попутно формируя XML -ку.

Но XML-ки разрешенная структуру довольно строгая. В каком-то месте можно вставить определненные теги, в каких-то нет.. (все схемой определяется).
Например, если родительский тег такой, а надродительский еще такой… то картинку можно, а если надродительский тег другой - то уже нельзя.
Т.е. XML-ка более ограниченная, чем HTML-ка.

Никто не подскажет - как такие штуки решаются (принимаются любые предложения)?



Отредактировано (Авг. 24, 2008 22:57:07)

Офлайн

#2 Авг. 25, 2008 00:44:26

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

HTML в валидный XML

Переводить в промежуточный формат (например, не такой строгий XML) а уже из него формировать XML.
На самом деле - задача сложная. HTML - формат допускающий разное трактование и написание. Переводить его в строгую структуру врятли получится без конфликтов. Получится либо избыточно, либо ущербно.

Офлайн

#3 Авг. 25, 2008 00:50:59

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

HTML в валидный XML

html5lib, если я правильно понял задачу.

..bw



Офлайн

#4 Авг. 25, 2008 01:09:57

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

HTML в валидный XML

Ferroman
Переводить в промежуточный формат (например, не такой строгий XML) а уже из него формировать XML.
хм. Мне кажется, задача от этого не изменится.

Ferroman
На самом деле - задача сложная. HTML - формат допускающий разное трактование и написание. Переводить его в строгую структуру врятли получится без конфликтов. Получится либо избыточно, либо ущербно.
Я выбрал вариант - ущербно.

bw
html5lib, если я правильно понял задачу.
А в каком качестве ее использовать? Я слышал про нее, как пожалуй наилучший из парсеров HTML в DOM, tree или soap структуры.



Отредактировано (Авг. 25, 2008 01:14:44)

Офлайн

#5 Авг. 25, 2008 10:34:19

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

HTML в валидный XML

Мне кажется, задача от этого не изменится.
Ну почему же? В такой задаче основная проблема - учесть все исключения. Это гораздо проще с переводом сначала в буферный XML. И ошибки ловить легче. И сразу видны моменты “двузначности” и “неопределённости”.
Но может я и усложняю, но по моему это случай “Divide et impera”.

Офлайн

#6 Авг. 25, 2008 15:56:47

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

HTML в валидный XML

shiza
А в каком качестве ее использовать?
В качестве валидирующего парсера HTML.
HTML -> DOM/ElementTree/BeautifulSoup -> XML (XHTML)

p.s. Работает относительно медленно. Вернее это, пожалуй, будет самым тормазнутым решением.

..bw



Офлайн

#7 Авг. 26, 2008 15:35:47

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

HTML в валидный XML

Ferroman Да. Чем больше думаю, тем больше мне кажется что это имеет смысл.
bw Скорость мне не критична. Но. Я привык к BeautifulSoup интерфейсу. А html5lib пока еще в некоторых случаях вылетает - когда парсишь в BeautifulSoup. Поэтому сейчас сначала прогоняю через html5lib - для корректировки кривых html (как корректор - ему нет равных). А потом расапрсиваю результат нативным BeautifulSoup.



Офлайн

#8 Авг. 26, 2008 16:45:49

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

HTML в валидный XML

Я тоже сначала работал с супом, но при переходе на html5lib пришлось учить xpath. Выучил, проблем не испытываю, очень мощная вещь.

p.s. Тренироваться в xpath удобно, используя специальные плагины к Firebird (я использую xpather).

..bw



Отредактировано (Авг. 26, 2008 16:47:55)

Офлайн

#9 Сен. 4, 2008 05:20:21

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

HTML в валидный XML

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version