0

銘柄記号と会社名のリストについて Yahoo Finance ページを解析しようとしています。私が使用している URL は次のとおりです: http://uk.finance.yahoo.com/q/cp?s=%5EFTSE

私が使用しているコードは次のとおりです。

HtmlAgilityPack.HtmlDocument page = new HtmlWeb().Load("http://uk.finance.yahoo.com/q/cp?s=%5EFTSE");

        var titles = page.DocumentNode.SelectNodes("//td[@class='yfnc_tabledata1']");
    // Returns all titles on the home page of this site in an array.

        foreach (var title in titles)
        {
            txtLog.AppendText(title.InnerHtml + System.Environment.NewLine);

        }

txtLog.AppendText 行は、私がテストしただけです。このコードは、td のノードの下にある yfnc_tabledata1 のクラスを含む各行を正しく取得します。foreach ループに入ったら、タイトルを解析して、次の HTML からシンボルと会社名を取得する必要があります。

<b><a href="/q?s=GLEN.L">GLEN.L</a></b>
GLENCORE XSTRAT
<b>343.95</b> <nobr><small>3 May 16:35</small></nobr>
<img width="10" height="14" style="margin-right:-2px;" border="0"
src="http://l.yimg.com/os/mit/media/m/base/images/transparent-1093278.png"
class="pos_arrow" alt="Up"> <b style="color:#008800;">12.80</b>
<bstyle="color:#008800;"> (3.87%)</b> 68,086,160

解析されたドキュメントの結果を解析することは可能ですか? どこから始めればよいか少しわかりません。

4

1 に答える 1

0

現在の場所から XPATH 抽出作業を続行する必要があるだけです。多くの可能性があります。問題は、すべての yfnc_tabledata1 ノードが同じレベルにあることです。これを行う方法は次のとおりです (コンソール アプリの例では、シンボルと会社のリストをダンプします)。

HtmlAgilityPack.HtmlDocument page = new HtmlWeb().Load("http://uk.finance.yahoo.com/q/cp?s=%5EFTSE");

// get directly the symbols under the 1st TD element. Recursively search for an A element that has an HREF attribute under this TD.
var symbols = page.DocumentNode.SelectNodes("//td[@class='yfnc_tabledata1']//a[@href]");

foreach (var symbol in symbols)
{
    // from the current A element, go up two level and get the next TD element.
    var company = symbol.SelectSingleNode("../../following-sibling::td").InnerText.Trim();
    Console.WriteLine(symbol.InnerText + ": " + company);
}

XPATH 軸の詳細: XPATH 軸

于 2013-05-04T15:53:31.983 に答える