人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

UWSCを使ってWEB上から必要なデーターを取る方法を教えて下さい。
なお、WEB上のデーターの詳細を添付の画像に示します。

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

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

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



1387280635
●拡大する

●質問者: iwana1999
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● lang_and_engine
●1000ポイント ベストアンサー

>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に変更して下さい。

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


iwana1999さんのコメント
lang_and_engine様 詳細な回答を頂きまして有り難うございます。 この様は回答を短時間に頂来まして本当に助かりますm(_ _)m 内容の確認は明日にさせて頂きますので悪しからずご容赦下さい。 以上、宜しくお願い致します。

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

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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ