HtmlAgilityPack: caratteri non ammessi nel percorso

c# html-agility-pack html-parsing

Domanda

Sto ottenendo un errore "caratteri illegali nel percorso" in questo codice. Ho menzionato "Errore che si verifica qui" come commento nella riga in cui si verifica l'errore.

var document = htmlWeb.Load(searchUrl);
var hotels = document.DocumentNode.Descendants("div")
             .Where(x => x.Attributes.Contains("class") &&
             x.Attributes["class"].Value.Contains("listing-content"));

int count = 1;
foreach (var hotel in hotels)
{
    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.OptionFixNestedTags = true;
    htmlDoc.Load(hotel.InnerText);      // Error Occuring Here //
    if (htmlDoc.DocumentNode != null)
    {
        var hotelName = htmlDoc.DocumentNode.SelectNodes("//div[@class='business-container-inner']//div[@class='business-content clearfix']//div[@class='business-name-wrapper']//h3[@class='business-name fn org']//div[@class='srp-business-name']//a[0]");
        foreach (var name in hotelName)
        {
            Console.WriteLine(name.InnerHtml);
        }
    }
}

Risposta accettata

Dovresti usare il metodo LoadHtml con carichi di una stringa. Load carichi del metodo da file

htmlDoc.LoadHtml(hotel.InnerText);   

Risposta popolare

Ciò significa semplicemente che stai cercando di caricare un file con un carattere non valido nel percorso / nome del file .

L'errore è qui:

htmlDoc.Load(hotel.InnerText); 

..perché il sovraccarico si aspetta il percorso del file:

htmlDoc.Load(hotel.InnerText); 

Usa LoadHtml per caricare un frammento HTML:

htmlDoc.Load(hotel.InnerText); 



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é