Существует замечательная вещь, называемая NekoHTML, которая представляет собой просто тонкую оболочку над анализатором Apache Xerces, которая включает восстановление / исправление ошибок. Он не столько проверяет, сколько исправляет ошибку, поэтому вы можете обработать результат как XML, то есть запустить его через XPath или XSLT. В течение нескольких месяцев он работал безупречно для совершенно произвольного HTML-кода сторонних сайтов.