Ayuda de Html Agility Pack

c# html-agility-pack

Pregunta

Estoy tratando de obtener información de un sitio web, pero no puedo encontrar una solución que funcione para mí. Cada código que leo en Internet genera al menos un error para mí.

Incluso el código de ejemplo en su página de inicio genera errores para mí.

Mi código:

         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 el siguiente error:

'HtmlDocument' es una referencia ambigua entre 'System.Windows.Forms.HtmlDocument' y 'HtmlAgilityPack.HtmlDocument' C: * \ Form1.cs

Edición: Mi código completo se encuentra aquí: http://beta.yapaste.com/55

Toda la ayuda es muy apreciada!

Respuesta aceptada

Utilice HtmlAgilityPack.HtmlDocument :

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

El compilador se confunde porque dos de los espacios de nombres que ha importado using contienen clases llamadas HtmlDocument : el espacio de nombres del Paquete de Agilidad HTML y el espacio de nombres de los formularios de Windows. Puede solucionar esto especificando qué clase desea usar explícitamente.


Respuesta popular

Así es como lo logré. Tenga en cuenta que hay un error de código en el Ejemplo de Paquete de Agilidad Html principal en la línea doc.DocumentElement.SelectNodes de foreach ("// a [@href"]). El correcto y probado se da a continuación.

 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());

Desde que empezó a funcionar para mí, pensé que debía compartir.



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é