Table d'analyse avec LINQ et HtmlAgilityPack

c# html-agility-pack linq

Question

Comment analyser HTML en utilisant LINQ sur une page Web pour obtenir les valeurs innerhtml de la table?

J'utilise HtmlAgilityPack et voudrais analyser certaines valeurs aussi bien que possible.

les numéros que vous voyez (00000, 00001, 00002 ..) sont des numéros uniques provenant des agents.

Alors peut-être qu’il ya un moyen d’utiliser LINQ pour analyser ces nombres et obtenir les valeurs suivantes à partir de td's

(Nom, 123, état et informations) => 00000, John, 123, IDLE, café pour chacun afin que je puisse les appeler séparément et travailler avec eux - peut-être dans un tableau?

</TH>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>00000</TD>
        <TD ALIGN=LEFT>John</TD>
        <TD ALIGN=CENTER>123</TD>
        <TD ALIGN=LEFT>IDLE</TD>
        <TD ALIGN=LEFT>coffee</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>00001</TD>
        <TD ALIGN=LEFT>Lisa</TD>
        <TD ALIGN=CENTER>123</TD>
        <TD ALIGN=LEFT>IDLE</TD>
        <TD ALIGN=LEFT>coffee</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>00002</TD>
        <TD ALIGN=LEFT>Mary</TD>
        <TD ALIGN=CENTER>123</TD>
        <TD ALIGN=LEFT>IDLE</TD>
        <TD ALIGN=LEFT>coffee</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>00003</TD>
        <TD ALIGN=LEFT>Tim</TD>
        <TD ALIGN=CENTER>123</TD>
        <TD ALIGN=LEFT>IDLE</TD>
        <TD ALIGN=LEFT>coffee</TD>
    </TR>
....

Merci d'avance!

Réponse populaire

Cela ressemble beaucoup à une "s'il vous plaît donnez-moi le code dont j'ai besoin", ce que je n'aime vraiment pas. Regardez ce qui suit et assurez-vous de bien le comprendre:

var doc = ... // Load the document
var trs = doc.DocumentNode.Descendants("TR"); // Give you all the TRs
foreach (var tr in trs)
{
  var tds = tr.Descendants("TD").ToArray(); // Get all the TDs
  // Turn them into our datastructure
  var data = new {
             Name  = tds[1].InnerText,
             Number = tds[2].InnerText,
             State = tds[3].InnerText,
             Info  = tds[4].InnerText,
             };
  // Do something with data
}

Le faire avec LINQ uniquement:

var data = from tr in doc.DocumentNode.Descendants("TR")
           let tds = tr.Descendants("TD").ToArray()
           select new {
             Name  = tds[1].InnerText,
             Number = tds[2].InnerText,
             State = tds[3].InnerText,
             Info  = tds[4].InnerText,
             };


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