Analysiere Tabelle mit LINQ und HtmlAgilityPack

c# html-agility-pack linq

Frage

Wie kann ich HTML mithilfe von LINQ auf einer Webseite analysieren, um die innerhtml Werte aus der Tabelle innerhtml ?

Ich verwende das HtmlAgilityPack und möchte einige Werte so gut wie möglich parsen.

Die Nummer, die Sie sehen (00000, 00001, 00002 ..), sind eindeutige Nummern der Agenten.

Vielleicht gibt es eine Möglichkeit, LINQ zu verwenden, um diese Zahlen zu analysieren und die folgenden Werte von td's

(Name, 123, Zustand und Info) => 00000, John, 123, IDLE, Kaffee für jeden, damit ich sie einzeln anrufen und mit ihnen arbeiten kann - vielleicht in einem Array?

</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>
....

Danke im Voraus!

Beliebte Antwort

Dies scheint sehr viel wie ein "Bitte gib mir den Code, den ich brauche Frage", was ich nicht wirklich mag. Sehen Sie sich Folgendes an und stellen Sie sicher, dass Sie es verstanden haben:

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
}

Nur mit LINQ machen:

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,
             };


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow