Pack d'agilité HTML - tables d'analyse

c# html html-agility-pack html-parsing

Question

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 sur la manière d'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éponse acceptée

Que diriez-vous de quelque chose comme: Using HTML Agility Pack

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

Réponse populaire

Le plus simple que j'ai trouvé pour obtenir XPath pour un élément particulier est d'installer l'extension FireBug pour Firefox. Allez sur le site / page Web, appuyez sur F12 pour afficher Firebug; sélectionnez à droite, cliquez avec le bouton droit sur l'élément de la page que vous souhaitez interroger et sélectionnez "Inspecter l'élément". Firebug sélectionnera l'élément dans son IDE, puis cliquez avec le bouton droit sur l'élément dans Firebug et choisissez "Copier XPath". Requête pour obtenir l’élément souhaité à l’aide de HTML Agility Library.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow