C # - HTML Agility Pack - Knotenauflistung - Schleifen von Tabellenzeilen, Auswählen von n-ten Kindern (2)

c# html-agility-pack

Frage

Ich arbeite mit htmlAgilityPack und hole mir einen Tisch von einer Website.

Wie kann ich dies ändern, um Werte für jede Zeile, nur jede zweite Spalte zurückzugeben.

public static void SearchAnimal(string param)
        {
            string prm = param;
            string url = "http://xxx/xxx.action?name=";
            //HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url+prm);
            //HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //StreamReader stream = new StreamReader(response.GetResponseStream());
            //string final_response = stream.ReadToEnd();
            var webGet = new HtmlWeb();
            var doc = webGet.Load(url + prm);

            HtmlNodeCollection tr = doc.DocumentNode.SelectNodes("//table[@id='animal']//tbody//tr//td");

                  for(int i = 0; i <= tr.Count; ++i){
                    var link = tr
                       .Descendants("a")
                       .First(x => x.Attributes["href"] != null);
                    string hrefValue = link.Attributes["href"].Value;
                    string name = link.InnerHtml;
                    Match match = Regex.Match(hrefValue, @"(\d+)$");
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.WriteLine("Result " + tr + ":");
                    Console.ForegroundColor = ConsoleColor.Gray;
                    Console.WriteLine("Animal Name: " + name);
                    Console.WriteLine("Animal Key: " + match.Value);
                    Console.WriteLine("-------------------------");
                    Console.WriteLine("");

                       }



        }

Akzeptierte Antwort

Sie können den XPath-Positionsfilter verwenden, um nur das 2. <td> Kind von jedem <tr> :

//table[@id='animal']//tbody//tr/td[2]

Es entspricht tatsächlich CSS :nth-of-type() selector und zeigt dieselbe Ausgabe wie :nth-child() nur dann, wenn alle untergeordneten Elemente vom selben Typ sind (dh alle <td> in diesem Fall <td> ).



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum