Je souhaite utiliser le pack d'agilité HTML pour analyser des tables à partir de pages Web complexes, mais je suis en quelque sorte perdu dans le modèle d'objet. J'ai regardé l'exemple de lien, mais je n'ai trouvé aucune donnée de table de cette façon. Puis-je utiliser Xpath pour obtenir les tables? Je suis fondamentalement perdu après avoir chargé les données, comment obtenir les tables. J'ai déjà fait cela en Perl et c'était un peu maladroit, mais ça a fonctionné. (HTML :: TableParser). Je suis également heureux si l'on peut simplement éclaircir le bon ordre d'objet pour l'analyse.
Réponses
Trop de publicités?Que diriez-vous de quelque chose comme: (Using HTML Agility Pack: http://www.codeplex.com/htmlagilitypack )
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"<html><body><p><table id=""foo""><tr><th>hello</th></tr><tr><td>world</td></tr></table></body></html>");
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table")) {
Console.WriteLine("Found: " + table.Id);
foreach (HtmlNode row in table.SelectNodes("tr")) {
Console.WriteLine("row");
foreach (HtmlNode cell in row.SelectNodes("th|td")) {
Console.WriteLine("cell: " + cell.InnerText);
}
}
}
Notez que vous pouvez le rendre plus joli avec LINQ-to-Objects si vous voulez:
var query = from table in doc.DocumentNode.SelectNodes("//table").Cast<HtmlNode>()
from row in table.SelectNodes("tr").Cast<HtmlNode>()
from cell in row.SelectNodes("th|td").Cast<HtmlNode>()
select new {Table = table.Id, CellText = cell.InnerText};
foreach(var cell in query) {
Console.WriteLine("{0}: {1}", cell.Table, cell.CellText);
}
Le plus simple que j'ai trouvé pour obtenir le XPath pour un Élément particulier est d'installer l'extension FireBug pour Firefox, aller sur le site/page web appuyez sur la touche F12 pour afficher firebug; à droite, sélectionnez et cliquez-droit sur l'élément sur la page que vous souhaitez requête et sélectionnez "Inspecter l'Élément" Firebug sera sélectionnez l'élément dans son IDE puis cliquez-droit sur l'Élément dans Firebug et choisissez "Copier XPath" cette fonction va vous donner l'exacte Requête XPath vous avez besoin pour obtenir l'élément que vous souhaitez à l'aide de HTML Agilité de la Bibliothèque.