Analizar la tabla html utilizando LINQ y HtmlAgilityPack

c# html-agility-pack linq

Pregunta

Quiero analizar la fecha, el texto del enlace y el enlace href de la clase de tabla = 'nice' en la página web http://cslh.cz/delegace.html?id_season=2013

He creado el objeto Delegación Enlace

public class DelegationLink
{
   public string date { get; set; }
   public string link { get; set; }
   public string anchor { get; set; }
}

y lo usé con LINQ para crear la Lista de Delegación Enlace

var parsedValues =
from table in htmlDoc.DocumentNode.SelectNodes("//table[@class='nice']")
from date in table.SelectNodes("tr//td")
from link in table.SelectNodes("tr//td//a")
   .Where(x => x.Attributes.Contains("href"))
select new DelegationLink
{
   date = date.InnerText,
   link = link.Attributes["href"].Value,
   anchortext = link.InnerText,
};
return parsedValues.ToList();

que toma la columna de fecha solo por una y la combina con la columna de enlace en cada fila, pero solo quiero tomar cada fila en la tabla y obtener la fecha, href y hreftext de esa fila. Soy nuevo en LINQ y utilicé Google durante 4 horas sin ningún efecto. Gracias por la ayuda.

Respuesta aceptada

Bueno, eso es bastante sencillo, solo tiene que seleccionar los tr 's en las SelectNodes función SelectNodes y ajustar su código un poco. Algo como esto.

var parsedValues = htmlDoc.DocumentNode.SelectNodes("//table[@class='nice']/tr").Skip(1)
.Select(r =>
      {
        var linkNode = r.SelectSingleNode(".//a");
        return new DelegationLink()
                  {
                    date = r.SelectSingleNode(".//td").InnerText,
                    link = linkNode.GetAttributeValue("href",""),
                    anchor = linkNode.InnerText,
                  };
      }
);
return parsedValues.ToList();


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é