ダウ平均株価の取引値、高値、安値
の各数値を取ってくるプログラムを教えてください。
windows上のデスクトップで機能するものでお願いします。
使ってもらいたい言語はC# WSH Ruby VB C C++ その他 の順です。
URLはダミーです。
.NET(C#)を例にして説明します。
コーディング部分は記憶に頼るので、VSでそのへんを適当に探ってやってください。
・ダウ平均株価取引値、高値、安値があるwebサイトを探す
http://www.asahi.com/business/stock.html
このへんでしょうか。
・こいつをゲットしてくるコードを書く
System.Net.WebClientを使う
webClient.OpenRead(”url”);だったと思う
Streamが帰ってくるので
System.IO.StreamReaderを使う
文字列形式で取得して、あとはstring.IndexOfで対象の数値を取得して整形してやる
大体以上です。
http://www.devarticles.com/c/a/C-Sharp/Build-a-C-sharp-Stock-Quo...
Page 3 - Build a C# Stock Quote WebService Part 1/2
ここに詳しいC#コードが書いてあります。quote.yahoo.comからデータを取得する方法ですが、DOWのデータはhttp://finance.yahoo.com/d/quotes.csv?s=%5EDJI&f=sl1d1t1c1oh...から取得できるので、GETしたストリームをカンマでparseすれば簡単です。
http://finance.yahoo.com/d/quotes.csv?s=%5EDJI&f=sl1d1t1c1oh...
ではブラウザに表示されず、「 =.csv 」を除いたもので使用してもOKでしょうか?また、「 =.csv 」を付けたら何か特別な機能とかが使えるのでしょうか?
それと、自分はC#は勉強し始めたばっかりなのでBuild a C# Stock Quote WebService Part 1/2 のサイトでは書かれてるコードで何ができるかが意味不明です。そのコードでquote.yahoo.comからデータを取得できるのでしょうか?
Yahoo! Finance - Get stock quotes, market news, mortgage rates & currency info.
// 説明不足ですみませんでした。Yahooのこのページ
// http://finance.yahoo.com/q?s=%5EDJI
// からDowの取引値、高値、安値(”Day’s Range”というのがその日の高値と安値ですね)が見れます
// そこのページから[Download Data]というリンクをクリックすると、htmlのテーブルの内容がCSVのストリームとしてダウンロードできます
// リンクのページのコードはWebService用でしたが、適当に以下の書き直すことができました
// (あれ、IEオブジェクトを使わなければならないのでしたっけ?だとしたら的外れなのでキャンセルしてください。。。)
// ちなみに、IEオブジェクトを使わなくても良いのならばフリーのWebServiceを使うのがよりトレンディでしょうね
// IEオブジェクトを使う場合はCreateObjectでオブジェクトを作ってNavigateメソッドでページをロードして
// DocumentプロパティがDOMオブジェクトなのでうまく操作して目的の値をゲットします。
using System;
using System.Net;
using System.IO;
using System.Text;
public class Test
{
static public void Main(string[] argv)
{
Test t = new Test();
t.GetDowJonesData();
}
public string GetDowJonesData()
{
string result=””;
try
{
// このURLからCSVとしてDow JonesのデータがGETできる
string serverURL = ”http://finance.yahoo.com/d/quotes.csv?s=%5EDJI&f=sl1d1t1c1oh...”;
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(serverURL);
// ここはProxyを使う場合なので直の場合は削除してください(こちらの環境では必要だったので)
WebProxy myProxy = new WebProxy(”XX.XX.XX.XX:8080”, true, null, new NetworkCredential(”UserName”, ”UserPassword”, ”DomainName”));
myProxy.BypassProxyOnLocal = true;
webreq.Proxy = myProxy;
// データをHTTPでゲットしてストリームとして読み込みます
HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
StreamReader strm = new StreamReader(webresp.GetResponseStream(), Encoding.ASCII);
// 一行目に全部書いてあるので一行を読みこみ、カンマでスプリットします
string strContent = strm.ReadLine();
string[] contents=strContent.ToString().Split(’,’);
System.Console.WriteLine(”平均値:” + contents[1]);
System.Console.WriteLine(”高値:” + contents[6]);
System.Console.WriteLine(”安値:” + contents[7]);
}
catch(Exception)
{
result=”exception”;
}
return result;
}
}
WebServiceでできるならIEオブジェクトを使う必要は
ないのですが、IEオブジェクトも知識程度に知っておきたいです。
度々長い文章ありがとうございました。
http://www.hatena.ne.jp/1120421331#a1
人力検索はてな - IEオブジェクトに関する質問です。 ダウ平均株価の取引値、高値、安値 の各数値を取ってくるプログラムを教えてください。 windows上のデスクトップで機能するものでお願い..
はてなをちょっと眺めていたんですが、果敢にプログラミングに挑戦されているのですね。好感が持てます。ちょっとだけ突っ込ませてください。
> 『 ” 』がたぶん原因で、エラーになります
(誤り)
string seek = ”td width=”25%” align=”right”>”;
(正しい)
string seek = ”td width=¥”25%¥” align=¥”right¥”>”;
→ 文字列中に”を含む場合は、(半角で)¥”と書きます。円マークは、(半角で)「\」という形で表示される場合もあります。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...
MSDN ライブラリ サイト移行に関する重要なお知らせ
表 1. C# における文字列リテラルのエスケープ シーケンス
をご参照ください。
>>果敢にプログラミングに挑戦されているのですね。
その通りです。
ためになりました
ありがとうございます。
追加投稿失礼します。
str = str.SubString(str.IndexOf(”td width=¥”25%¥” align=¥”right¥”>”) + 29)
としましょう。
文字数は検索文字の文字数です。
strの先頭に、ほしい数字があるはずです。
先ほどのソースですけど、コンパイルしたとき以下のようなエラーがでました。
dow.cs(42,19): error CS1502: ’string.Split(params char[])’ に最も適しているオー
バーロード
メソッドには無効な引数がいくつか含まれています。
dow.cs(42,47): error CS1503: 引数 ’1’: ’string’ から ’char[]’ に変換できません。
とでます。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...
MSDN ライブラリ サイト移行に関する重要なお知らせ
「に最も適しているオーバーロードメソッドには無効な引数がいくつか含まれていす。」というのは、引数の型が違うということです。適切に変換してあげればOKになります。
msdnを見ましょう。
> string[] contents=strContent.ToString().Split(’,’);
ですけど、正しいのは
contents=strContent.ToString().Split( (”,”).ToCharArray());
でしょう。
回答は2回までなので、これ以上は自分はこの質問に対しては回答できないです。
この回答をする際に使ったgoogleの検索結果です。ご自分で調べる際の手がかりにしてください。
直してみます。ありがとうございました。
終値が書いてあるところのタグは
td width=”25%” align=”right”>10303.44
</td>
で、
string seek = ”td width=”25%” align=”right”>”;
int index = text.IndexOf( seek );
textBox2.Text = text.Substring( index+1 );
でやろうと思いましたが、 『 ” 』
がたぶん原因で、エラーになります
他に10303.44を取ってくるやり方はないのでしょうか?