1387280635 UWSCを使ってWEB上から必要なデーターを取る方法を教えて下さい。

なお、WEB上のデーターの詳細を添付の画像に示します。

WEB上にはSYMBOLが22個並んでおり、有る条件を満たすとPROBABILITYのデーターが出てきます。
なお、データーはいろいろなシンボルについて同時に出たり出なかったり様々です。

取得したいデーターは、画像ファイル中、左下の
① "USDJPY"
② 87% 
③ Put 

以上、宜しくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/12/17 20:43:55
  • 終了:2013/12/18 08:43:07

ベストアンサー

id:language_and_engineering No.1

lang_and_engine回答回数170ベストアンサー獲得回数632013/12/17 23:01:47

ポイント1000pt

>WEB上にはSYMBOLが22個並んでおり、有る条件を満たすとPROBABILITYのデーターが出てきます。
>なお、データーはいろいろなシンボルについて同時に出たり出なかったり様々です。

画面上にはtableがあり,この表の1列目「SYMBOL」の値が「USDJPY」であるような行がある。
その行の3列目には,いつもPROBABILITYのデータが表示されているとは限らないが,
PROBABILITYのデータが表示されているタイミングもある。
もしUSDJPYのPROBABILITYの値が表示されていれば,その値を取得したい。

という事でよろしいですね。


下記のコードをどうぞ。



// アクセスしたいページのURL
url = "http://name-of-this-site.org/coding/dummy/1387280635q/"


// 新規IEオブジェクトを作成
ie = createOLEobj("InternetExplorer.Application")

// 起動中のIEを見えるように
ie.visible = True
wid = hndtoid( ie.hwnd )
acw( wid )


// 対象ページを開く
ie.navigate( url )
ie_wait( ie )





// まずテーブルを取得
tables = ie.document.getElementsByTagName("table")
found_table = false
target_table = empty
	// http://canal22.org/control/buitinconstant/
for i = 0 to tables.length - 1
	ifb tables.item( i ).className = "alert-table" then
		// http://d.hatena.ne.jp/vividcode/20100327/1269724469
		
		// [i]で参照しようとすると「次元数が合いません」のエラーになる
		// http://canal22.org/advance/ie/parent-child-ta/
		
		//msgbox( "テーブルを発見" )
		found_table = true
		target_table = tables.item( i )
	endif
next
ifb found_table <> true then
	// http://mission-o.seesaa.net/article/121325919.html

	msgbox( "テーブルを発見できませんでした。" )
	
	// 終了
	exitexit
endif


// テーブルからデータを取得
trs = target_table.getElementsByTagName("tr")
for j = 1 to trs.length - 1 // 先頭行はスキップして1から
	tds = trs.item( j ).getElementsByTagName("td")
	
	// SYMBOLを確認
	ifb tds.item(0).innerText = "USDJPY" then
		// 該当行を発見
		
		str = tds.item(2).innerText
		ifb pos( "%", str ) > 0 then
			// セルの中に「%」という文字があれば,データが表示されていると考える。
			// http://uwsc.dohow.jp/blog/pos.html

			str_arr = split( str, " " ) 
				// 半角スペースで分割する
				// http://canal22.org/kansu/split/
			
			data1 = str_arr[0]
			data2 = str_arr[1]
			msgbox("データは" + data1 + "および" + data2 + "です。" )
				// データ取得完了。取得したデータをもとに好きな処理をすればよい。
		else
			msgbox("USDJPYの行にはデータがありませんでした。")
				// このメッセージを表示せずに,待機し続けてもよい。
		endif
	
	endif
	
next



// IEがビジー状態の間待ちます
procedure ie_wait( ie )
  repeat
    sleep( 0.1 )
  until ( ! ie.busy ) and ( ie.readystate = 4 )
  sleep( 0.1 )
fend


// コード全体の参考:
// http://d.hatena.ne.jp/language_and_engineering/20090729/p1



このコードは実際に動作します。

この質問に回答するために,動作テスト用のページとして下記のURLを設置しました。
http://name-of-this-site.org/coding/dummy/1387280635q/

上のコードでは,ここにアクセスしてデータを取っています。

実際の利用時には,ご自分がアクセスするURLに変更して下さい。

また,データが表示されていない時には待機してから再度処理を試みる,
等の場合には,このコードの「テーブルを取得」以降の部分を定期的にループで回す事になります。

他1件のコメントを見る
id:language_and_engineering

ポイント数が大きいため,もし仕様変更を望まれる場合は,コメント欄などでご相談ください。
大体3回ぐらいまでの仕様変更やサポートであれば,お力になれる場合もあります。
では為替取引,頑張って下さい。

2013/12/18 09:54:03
id:iwana1999

lang_and_engine様

お気遣い頂きまして有り難うございます。
先ほど、使用するURLでデーターを取ることが出来ましたm(_ _)m
後は、このデーターを使って売買するだけですが、当たるも八卦当たらぬも八卦の世界です(^^)

2013/12/18 12:05:17

コメントはまだありません

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません