DOBON.NETプログラミング道掲示板
(現在 過去ログ4 を表示中)
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
[
最新記事及び返信フォームをトピックトップへ
]
[ トピック内全2記事(1-2 表示) ] <<
0
>>
■34632
/ inTopicNo.1)
正規表現で株価を取得したい
▼
■
□投稿者/ 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
/ inTopicNo.2)
Re[1]: 正規表現で株価を取得したい
▲
▼
■
□投稿者/ cb400s
一般人(2回)-(2021/01/23(Sat) 20:15:16)
自己解決しました。
最初に取得したhtmlから、改行、半角スペースを削除しており
それを考慮して、正規表現の抽出式を記述する必要があることが
わかりました。
次のように抽出部分を変更したところ、希望通りの値を取得する
ことができました。
"<divclass=\"lineFiclearfix\">.*?<strong>(?<kValue>.*?)</strong>.*?始値"
解決とさせていただきます。
解決
済
み!
引用返信
削除キー/
編集
削除
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-