Analyser la table HTML à l'aide de LINQ et HtmlAgilityPack

c# html-agility-pack linq

Question

Je souhaite analyser la date, le texte du lien et le lien href de la table class = 'nice' sur la page Web http://cslh.cz/delegace.html?id_season=2013

J'ai créé l'objet DelegationLink

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

et utilisé avec LINQ pour créer une liste de délégation

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

qui prend une colonne de date par un et le combine avec une colonne de lien dans chaque ligne, mais je veux simplement prendre chaque ligne de la table et obtenir la date, href et hreftext à partir de cette ligne. Je suis nouveau sur LINQ et j'ai utilisé Google pendant 4 heures sans aucun effet. Merci pour l'aide.

Réponse acceptée

Eh bien, c'est plutôt facile, il vous suffit de sélectionner les tr dans les SelectNodes fonction SelectNodes et d'ajuster légèrement votre code. Quelque chose comme ça.

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi