tidy sucks
Добрый день.
Товарищи, подскажите, пожалуйста, где я туплю?
Задача: построить DOM из невалидного html
Проблема: если страница отдаётся в windows-1251, tidy, который должен из кривой страницы построить нормальную, валится с segmentation fault.
Пример (сайт не тот, но тоже отдаёт 1251):
Если заменить s.decode("windows-1251") на просто s, то minidom строит нормальное дерево, но делает строку юникодной, и в итоге обратный decode не срабатывает.
Без tidy, соответственно, xml.parsers.expat.ExpatError: not well-formed
Есть ли ещё какие-то способы получить на выходе нормальную страницу, которую можно отдать minidom?
Товарищи, подскажите, пожалуйста, где я туплю?
Задача: построить DOM из невалидного html
Проблема: если страница отдаётся в windows-1251, tidy, который должен из кривой страницы построить нормальную, валится с segmentation fault.
Пример (сайт не тот, но тоже отдаёт 1251):
import urllib import tidy from xml.dom import minidom x = urllib.urlopen("http://avt16.ru") s = x.read() options = dict(output_xhtml=1, add_xml_decl=0, indent=1, tidy_mark=0, output_encoding="utf8") s = str(tidy.parseString(s.decode("windows-1251"), **options)) dom3 = minidom.parseString(s) print dom3.toxml()
Если заменить s.decode("windows-1251") на просто s, то minidom строит нормальное дерево, но делает строку юникодной, и в итоге обратный decode не срабатывает.
Без tidy, соответственно, xml.parsers.expat.ExpatError: not well-formed
Есть ли ещё какие-то способы получить на выходе нормальную страницу, которую можно отдать minidom?
