HTMLアジリティパック - テーブルの解析

c# html html-agility-pack html-parsing

質問

私は、複雑なWebページからテーブルを解析するためにHTMLのアジリティパックを使用したいと思いますが、私は何とかオブジェクトモデルで失われています。

私はリンクの例を見ましたが、このようなテーブルデータは見つかりませんでした。 XPathを使用してテーブルを取得できますか?私は基本的にどのようにテーブルを取得するためのデータを読み込んだ後に失われています。私は以前これをPerlでやっていましたが、少し不器用でしたが、うまくいったのです。 ( HTML::TableParser )。

私はまた、解析のために適切なオブジェクト順序で光を放つことができれば幸いです。

受け入れられた回答

どのように何かのように: HTMLアジャイルパックを使用する

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

必要に応じて、LINQ-to-Objectsを使用するともっときれいにすることができます。

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

人気のある回答

私が特定の要素のためのXPathを得るために見つけた最も単純なのは、FirebugをFirefoxにインストールすることです。サイト/ WebページのF12を押してFirebugを起動してください。右クリックし、クエリを実行するページ上の要素を右クリックし、 "Inspect Element"を選択します.FirebugはIDE内の要素を選択し、Firebugの要素を右クリックして "Copy XPath"を選択します。 HTMLアジャイルライブラリを使用して、必要な要素を取得する必要があります。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ