2012-05-23 3 views
0

Я пишу поисковую систему, которая отправляется на все мои дочерние веб-сайты компании parse html и хранит их в базе данных. Эти веб-сайты действительно старые и не соответствуют требованиям html из 100000 сайтов, у которых около 25% имеют плохой html, что затрудняет анализ. Мне нужно написать код C#, который может исправить плохой html, а затем проанализировать содержимое или придумать решение, которое будет адресовать вышеупомянутую проблему. Если вы сидите на идее, фактический намек или фрагмент кода помогут.Как разобрать плохой html?

+0

Возможный дубликат http://stackoverflow.com/questions/4587727/screen-scraping-html-with-c-sharp – Ani

+0

Я знаю, что Wordpress имеет автокорректный html-код, вы можете просмотреть его исходный код, чтобы узнать, как они это делают - и попробуйте ту же логику –

+0

Что вы подразумеваете под плохим html? Если теги не закрыты и что-то вроде этого, я думаю, что синтаксический анализ будет кошмаром. –

ответ

4

Просто используйте Html Agility Pack. Очень хорошо разбирать неисправный html-код

+0

+1 Для HAP для синтаксического анализа плохо сформированного HTML. – Oded

+0

-1 к HAP: он анализирует его, но полностью ошибочно использует DOM-модель для нескольких страниц, на которых я пробовал. –

1

Люди обычно используют какую-то форму анализатора tag soup с эвристическим управлением.

E.g. для

Это в основном только лексеры, которые пытаются все возможное, чтобы построить AST от всех случайных символов.

1

Используйте анализатор tagoup, я уверен, что это one for C#. Затем вы можете сериализовать DOM на более-менее корректный HTML, в зависимости от того, соответствует ли этот парсер HTML DTD. В качестве альтернативы вы можете использовать HTML Tidy, что позволит устранить, по крайней мере, самые худшие ошибки.

Regexes не применимы для этой задачи.

Смежные вопросы