Aiuto Html Agility Pack

c# html-agility-pack

Domanda

Sto cercando di carpire alcune informazioni da un sito web ma non riesco a trovare una soluzione che funzioni per me. Ogni codice che ho letto su Internet genera almeno un errore per me.

Anche il codice di esempio nella loro homepage genera errori per me.

Il mio codice:

         HtmlDocument doc = new HtmlDocument();
         doc.Load("https://www.flashback.org/u479804");
         foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
         {
            HtmlAttribute att = link["href"];
            att.Value = FixLink(att);
         }
         doc.Save("file.htm");

Genera il seguente errore:

'HtmlDocument' è un riferimento ambiguo tra "System.Windows.Forms.HtmlDocument" e "HtmlAgilityPack.HtmlDocument" C: * \ Form1.cs

Modifica: il mio intero codice si trova qui: http://beta.yapaste.com/55

Tutto l'aiuto è molto apprezzato!

Risposta accettata

Usa HtmlAgilityPack.HtmlDocument :

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

Il compilatore si confonde perché due degli spazi dei nomi con cui hai importato l' using contengono classi chiamate HtmlDocument - lo spazio dei nomi di HTML Agility Pack e lo spazio dei nomi di Windows Form. Puoi aggirare questo specificando quale classe vuoi usare esplicitamente.


Risposta popolare

questo è il modo in cui ho raggiunto. Si noti che è presente un errore di codice nell'Elenco principale del pacchetto agilità Html nella riga foreach doc.DocumentElement.SelectNodes ("// a [@href"]). Di seguito è riportato quello corretto e testato.

 HtmlWeb hw = new HtmlWeb();

    HtmlDocument doc = hw.Load(@"http://tipscow.com");
    StringBuilder sb = new StringBuilder();

    List<string> lstHref = new List<string>();

    foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]").Distinct())
    {
        string curHref = link.Attributes["href"].Value;

        if(!lstHref.Contains(curHref))
        lstHref.Add(curHref);

    }
    foreach (string str in lstHref)
    {
        sb.Append(str +"<br />");
    }

    Response.Write (sb.ToString());

Dal momento che ha funzionato per me, ho pensato di doverlo condividere.



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é