IEオブジェクトに関する質問です。


ダウ平均株価の取引値、高値、安値
の各数値を取ってくるプログラムを教えてください。
windows上のデスクトップで機能するものでお願いします。
使ってもらいたい言語はC# WSH Ruby VB C C++ その他 の順です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:tailliar No.1

回答回数109ベストアンサー獲得回数0

ポイント15pt

URLはダミーです。

.NET(C#)を例にして説明します。

コーディング部分は記憶に頼るので、VSでそのへんを適当に探ってやってください。

・ダウ平均株価取引値、高値、安値があるwebサイトを探す

http://www.asahi.com/business/stock.html

このへんでしょうか。

・こいつをゲットしてくるコードを書く

System.Net.WebClientを使う

webClient.OpenRead(”url”);だったと思う

Streamが帰ってくるので

System.IO.StreamReaderを使う

文字列形式で取得して、あとはstring.IndexOfで対象の数値を取得して整形してやる


大体以上です。

id:niwatorisan

終値が書いてあるところのタグは

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を取ってくるやり方はないのでしょうか?

2005/07/04 07:07:48
id:akibare No.2

回答回数157ベストアンサー獲得回数5

ポイント15pt

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すれば簡単です。

id:niwatorisan

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からデータを取得できるのでしょうか?

2005/07/04 13:41:32
id:akibare No.3

回答回数157ベストアンサー獲得回数5

ポイント30pt

http://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;

}

}

id:niwatorisan

WebServiceでできるならIEオブジェクトを使う必要は

ないのですが、IEオブジェクトも知識程度に知っておきたいです。

度々長い文章ありがとうございました。

2005/07/04 23:17:31
id:shampoohat No.4

回答回数347ベストアンサー獲得回数0

ポイント15pt

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# における文字列リテラルのエスケープ シーケンス


をご参照ください。

id:niwatorisan

>>果敢にプログラミングに挑戦されているのですね。

その通りです。

ためになりました

ありがとうございます。

2005/07/04 23:21:08
id:tailliar No.5

回答回数109ベストアンサー獲得回数0

ポイント15pt

追加投稿失礼します。

str = str.SubString(str.IndexOf(”td width=¥”25%¥” align=¥”right¥”>”) + 29)

としましょう。

文字数は検索文字の文字数です。

strの先頭に、ほしい数字があるはずです。

id:niwatorisan

先ほどのソースですけど、コンパイルしたとき以下のようなエラーがでました。

dow.cs(42,19): error CS1502: ’string.Split(params char[])’ に最も適しているオー

バーロード

メソッドには無効な引数がいくつか含まれています。

dow.cs(42,47): error CS1503: 引数 ’1’: ’string’ から ’char[]’ に変換できません。

とでます。

2005/07/04 23:35:27
id:shampoohat No.6

回答回数347ベストアンサー獲得回数0

ポイント15pt

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の検索結果です。ご自分で調べる際の手がかりにしてください。

id:niwatorisan

直してみます。ありがとうございました。

2005/07/06 19:49:19
  • id:akibare
    あれ

    私の環境ではstrContent.ToString().Split(’,’)でコンパイルできましたよ。charをchar[]に自動キャストしてくれたのかと思った。なのでniwatoriさんのエラーは全角⇒半角に直す時に間違ってstrContent.ToString().Split(”,”)としてしまったのと考えていました(既に2回回答していたので伝える術がありませんでしたが)。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません