Существует бесплатная реализация C для XML под названием libxml2, в которой есть некоторые API-биты для XPath, которые я с большим успехом использовал, и вы можете указать HTML в качестве загружаемого документа. Это сработало для меня для некоторых неидеальных документов HTML.
По большей части XPath наиболее полезен, когда входящий HTML-код правильно закодирован и может читаться «как документ XML». Возможно, вы захотите использовать специальную утилиту для очистки HTML-документов. Вот один пример: http://tidy.sourceforge.net/
Что касается этих инструментов XPath, вы, вероятно, обнаружите, что большинство реализаций фактически основаны на уже существующих библиотеках C или C ++, таких как libxml2.