59 votes

Pack d'agilité HTML - tables d'analyse

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.

124voto

Marc Gravell Points 482669

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

30voto

Coda Points 427

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X