XPATH comment extraire un td à la fois d'un tbody en HTML à l'aide du pack d'agilité HTML

html html-agility-pack xpath

Question

J'essaie d'analyser le tableau à partir de l'URL (Google Finance) ci-dessous.

http://www.google.com/finance/historical?q=BOM:533278

J'essaie d'extraire uniquement les valeurs de fermeture dans la colonne de fermeture . Mais quand j'essaye avec le XPATH

http://www.google.com/finance/historical?q=BOM:533278

J'obtiens tous les nœuds d'avoir attribut comme classe et la valeur d'attribut comme rgt dans un Node.innerText lui-même.

J'ai besoin des valeurs une par une, pas toutes en même temps. Je dois faire quelque chose de stupide ici. Je vous remercie.

XPath réel trouvé en utilisant Firebug est un suivant

http://www.google.com/finance/historical?q=BOM:533278

Mais certains comment après la balise de formulaire ... Pack HTMLagility renvoie un nœud nul. Jamais pensé que cela prendrait si longtemps à mettre en œuvre.

Réponse acceptée

Si vous utilisez Firebug ou une extension de Firefox (telle que XPather ) pour obtenir le XPath des éléments à analyser, vous devrez peut-être supprimer les balises tbody du XPath.

Regardez la réponse suivante ici sur SO: Pourquoi firebug ajoute-t-il <tbody> à <table>?

Si vous utilisez HtmlAgilityPack , le XPath renvoyé par Firebug ou tout autre outil lié à Firefox peut différer, car la source HTML que vous analysez peut être différente de la source HTML de Firefox .

Il peut parfois être utile d’ouvrir la même page dans Internet Explorer 8 et d’utiliser les outils de développement (F12) comme vous le faites avec Firebug. Sinon, utilisez un autre outil comme HAP Explorer pouvant être téléchargé à partir de la page HtmlAgilityPack.


Réponse populaire

Il y a plusieurs façons de le faire. Voici une solution basée sur Data td (celle de la classe 'lm'):

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
... load the doc ...

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//td[@class='lm']/../td[5]"))
{
    Console.WriteLine("node=" + node.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