DOBON.NETプログラミング道掲示板

■34632 / 親記事)  正規表現で株価を取得したい
  
□投稿者/ cb400s 一般人(1回)-(2021/01/23(Sat) 16:22:36)
  • アイコン環境/言語:[Visual Studio 2017] 
    分類:[.NET] 

    C#にて正規表現の学習をしております。

    以下のWEBページから株価の「始値」のデータを取得するため、
    以下のように記述をしました。

    private string KabukaGet()
    {
    WebClient wc = new WebClient();
    //Stream st =   wc.OpenRead("http://stocks.finance.yahoo.co.jp/");
    Stream st
    wc.OpenRead
    ("https://stocks.finance.yahoo.co.jp/stocks/detail/?code=9942");
    Encoding enc = Encoding.GetEncoding("UTF-8");
    StreamReader sr = new StreamReader(st, enc);
    string html = sr.ReadToEnd();
    sr.Close();
    st.Close();
    return html;
    }

    private void button1_Click(object sender, EventArgs e)
    {
    string str = KabukaGet();

    this.textBox1.Text = str;

    MessageBox.Show("日経平均:" + GetValue());
    }

    private string GetValue()
    {
    string eValue;

    string html = KabukaGet();
    html = html.Replace("\r", "").Replace("\n", "").Replace(" ", "");
    MatchCollection IndexData;

    IndexData = Regex.Matches(
    //html, "<dtclass=\"DataTitle\">.*?日経平均株価. *?<strongclass=\"floatL\">(?<kValue>.*?)</strong>",
    html, "<divclass=\"lineFi clearfix\">
    (?<kValue>.*?).*始値",
    RegexOptions.IgnoreCase);
    eValue = IndexData[0].Groups["kValue"].ToString();
    return eValue;

    }



    日経平均株価を取得するサンプルがあったので、そちらで
    テストをした際は、希望通りの値を取得することができたの
    ですが、サンプルを修正し、「始値」を取得するように記述を
    変更してみたのですが、

    System.ArgumentOutOfRangeException: '指定された引数は、有効な値の範囲内にありません。
    パラメーター名:i'
    というエラーが発生します。

    正規表現の参考ページなども見ながら修正をしており、サンプルと
    同じようにしているつもりなのですが、どうにも問題点がわかりません。

    どうか、アドバイスをお願いします。


マルチポストを報告
違反を報告
引用返信 削除キー/
■34633 / ResNo.1)  Re[1]: 正規表現で株価を取得したい
□投稿者/ cb400s 一般人(2回)-(2021/01/23(Sat) 20:15:16)
  • アイコン自己解決しました。

    最初に取得したhtmlから、改行、半角スペースを削除しており
    それを考慮して、正規表現の抽出式を記述する必要があることが
    わかりました。

    次のように抽出部分を変更したところ、希望通りの値を取得する
    ことができました。

    "<divclass=\"lineFiclearfix\">.*?<strong>(?<kValue>.*?)</strong>.*?始値"

    解決とさせていただきます。



解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -