HtmlAgilityPack Issue en la lectura de html

.net c# html html-agility-pack parsing

Pregunta

Estoy leyendo sitios web en C # y obtengo contenidos como una cadena ... hay algunos sitios que no tienen una estructura html bien formada.

Estoy usando HtmlAgilityPack que me da problemas en ese caso.

¿Puede la gente sugerirme qué usar para poder leer toda la cadena y obtener información útil?

Aqui esta mi codigo

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

¿Por qué esta condición IF es verdadera para mi caso?

Respuesta aceptada

¿Cuál es el error que está recibiendo? ¿Está lanzando una excepción o solo desea ver el error? Es difícil decir cuál es tu pregunta real.

Puede ver los errores de marcado en el HTML utilizando la propiedad HtmlDoc.ParseErrors e HtmlDoc.ParseErrors . Esto le dará el número de línea, el código y el tipo de error.

Puede ver más información sobre esta propiedad aquí https://stackoverflow.com/a/5367455/235644

Editar

Ok, así que has actualizado tu pregunta desde mi respuesta. Puede ver el error específico que se está volviendo verdadero en su declaración IF haciendo un bucle a través de los .ParseErrors descritos anteriormente.

Segunda Edición

Puedes repasar los errores de esta manera:

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

Respuesta popular

Si su HTML es externo y no puede arreglarlo, primero puede ejecutarlo a través de un preprocesador de limpieza, luego analizarlo con HtmlAgilityPack .

Esto intentará solucionar tantos problemas como sea posible automáticamente antes de que HtmlAgilityPack pueda verlo. La herramienta de limpieza de HTML más popular es Tidy. Vea la versión de .NET aquí:

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué