HtmlAgilityPack Проблема при чтении html

.net c# html html-agility-pack parsing

Вопрос

Я читаю сайты на C # и получаю содержимое как строку .... есть некоторые сайты, которые не имеют хорошо сформированной структуры html.

Я использую HtmlAgilityPack, который дает мне вопрос в этом случае.

Можете ли вы предложить мне, что использовать, чтобы он мог читать целую строку, и я могу получить полезную информацию?

Вот мой код

 htmlDoc.LoadHtml(s);
  if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)

Почему это условие IF верно для моего случая

Принятый ответ

Какая ошибка вы получаете? Это бросает исключение или вы просто хотите увидеть ошибку? Трудно сказать, каков ваш реальный вопрос.

Вы можете увидеть ошибки разметки в HTML, используя свойство HtmlDoc.ParseErrors и итерации, хотя они. Это даст вам номер строки, код и тип ошибки.

Дополнительную информацию об этом свойстве можно найти здесь https://stackoverflow.com/a/5367455/235644

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

Хорошо, поэтому вы обновили свой вопрос со времени моего ответа. Вы можете увидеть конкретную ошибку, возвращающую значение true в вашем IF-заявлении, путем циклического .ParseErrors описаны выше.

Второе редактирование

Вы можете зацикливаться на таких ошибках:

 foreach (var error in htmlDoc.ParseErrors)
 {
      Debug.WriteLine(error.Line);
      Debug.WriteLine(error.Reason);
 }

Популярные ответы

Если ваш html является внешним, и вы не можете его исправить, вы можете сначала запустить его через препроцессор очистки, а затем проанализировать его с помощью HtmlAgilityPack .

Это попытается исправить как можно больше проблем, прежде чем HtmlAgilityPack увидит это. Наиболее популярным инструментом очистки HTML является Tidy. Смотрите версию .NET здесь:

http://sourceforge.net/projects/tidynet/



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow