HtmlAgilityPack Problema nella lettura di html

.net c# html html-agility-pack parsing

Domanda

Sto leggendo i siti web in C # e ottengo contenuti come string .... ci sono alcuni siti che non hanno una struttura html ben strutturata.

Sto usando HtmlAgilityPack che mi dà il problema in quel caso.

Puoi suggerirmi cosa usare in modo che possa leggere tutta la stringa e posso ottenere informazioni utili?

Ecco il mio codice

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

Perché questa condizione IF è vera per il mio caso

Risposta accettata

Qual è l'errore che stai ottenendo? Sta facendo un'eccezione o vuoi solo vedere l'errore? Difficile dire quale sia la tua vera domanda.

È possibile visualizzare gli errori di markup nell'HTML utilizzando la proprietà HtmlDoc.ParseErrors e HtmlDoc.ParseErrors iterazione. Questo ti darà il numero di riga, il codice e il tipo di errore.

Puoi vedere maggiori informazioni su questa proprietà qui https://stackoverflow.com/a/5367455/235644

modificare

Ok, quindi hai aggiornato la tua domanda dopo la mia risposta. È possibile visualizzare l'errore specifico che restituisce true nella dichiarazione IF .ParseErrors il looping di .ParseErrors come sopra descritto.

Seconda modifica

Puoi ripetere in loop gli errori in questo modo:

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

Risposta popolare

Se il tuo html è esterno e non puoi ripararlo, puoi prima eseguirlo tramite un preprocessore di pulizia, quindi analizzarlo con HtmlAgilityPack .

Questo tenterà di risolvere il maggior numero possibile di problemi automaticamente prima che HtmlAgilityPack possa vederlo. Lo strumento di pulizia HTML più popolare è Tidy. Vedi la versione .NET qui:

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




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché