• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQuery対応部をプログラムで読む)

jQuery対応部のプログラム読み取り方法とは?

このQ&Aのポイント
  • C++BuilderXE2のCppWebBrowser(vc++2010のWebBrowserでも同じと思う)で表示したリアルタイムにデータを表示するページの jQuery対応部のデータをプログラムで取得する方法を教えてください。
  • このページのソースを見ると、特定の部分のデータがサーバから転送されて表示されていることがわかります。JavaScriptかIEがこの部分でサーバからGETなどをしていると思われます。
  • 現在の計画では、イメージを読み取る方法で進めていますが、より効率的な方法があるか相談したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

IEではなく、FireFoxです。

qhtsige
質問者

お礼

FireFoxなら完全に読めました。(こんなこともあるのだ) Current_timeはbo.jsにあることは確認できました。でもこれはシステム時刻でサーバタイムではなかったかもしれませんね。 もっと典型的な <SPAN class=sp1>--</SPAN></TD> <TD class="pr1 ticket">--</TD> <TD class="tm1 odds">--</TD></TR> のsp1,pr1,tm1について全部の*.js(30個ほどある)検索しましたが、ヒットしませんでした。これでヒットしないと解せない話です。この部分だとおもうのですが。 明日、データが変化しているときに調べて見ます。

qhtsige
質問者

補足

解決しました。 なんのことはない、htmlでは、リアルタイムに変化する部分には数値が入っていました。 該当部分をscript上でIDやclass名などで対応つけているはずと予想される件は確認できていないわけですが。 あるいはページを毎度refreshしているのでしょうかね。 イベントで確かめて見ます。 refreshしていないのであれば、更新した部分だけをHTML上で書き換えて、ブラウザに渡すのですね。その方が素直な考えと納得します。 HTMLに入っているなら、htmlを直接textとして読むか、DOMで読むかをすればよいので、項目数は多数ありますが、問題ないです。自分としては直接タグを力づくで読むほうが簡単です。 休日に調査したのが間違いでした。 今回色々教わり参考になり、ありがとうございました。

その他の回答 (6)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

>でも、*.jsファイルを全部見ましたが、current_timeは見つかりませんでした。他にPriceBord.filesが読めなかったのですが、これが肝心のような名前で残念です。 え?bo.jsにありますけど。 オブジェクトを得る所。 // cache time panel jq object bo.$.current_time = $('#current_time'); 更新している所。 bo.$.current_time.html(bo.utils.date_string(d)); javascriptでjQuery/DOMの仕組みを理解していないと意味不明かも知れませんが。 #current_timeが書き換えられらイベントでC++に取り込むことが出来ると思います。 「HtmlDocument.AttachEventHandler メソッド (System.Windows.Forms)」 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.attacheventhandler.aspx このあたりが出来れば取り込めるはずですが未経験なのでアテにしないでください。

qhtsige
質問者

お礼

うーん困った。提示url”http://min-fx.jp/bo/”のデモ取引画面をクリックして、完全WEBページで名前をつけて保存で、 このwebページは保存できないとなるのです。 提示URLだけならばOKです。セキュリティを中、保護モードを有効にするのチェックをはずして再立ち上げしても同じです。これはwindows7ですが、windowsXPでも同じです。 ならばと開発者ツール(F12)ならば、bo.jsは開けるのですが、この画面では文字の検索ができないのです。  どのような手順でやられましたか。 HtmlDocument.AttachEventHandler メソッド を使うと、できる可能性があるのですか。難しそうですが、調べて見ます。

qhtsige
質問者

補足

IEのバージョンは、windows7はIE9,windowsXPはIE8です。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

保存方法は、ファイル→名前を付けて保存で「WEBページ完全」とすれはjsファイルもローカルに保存されます。 ><div id="current_time_container"><span id="current_time">----/--/-- --:--:--</span></div> >これがscriptやajaxの何に相当するのでしょうか。 javascriptやjQueryだと一例としてidをキーとして書き換えを行います。 ここだとspanにあるid="current_time"のcurrent_timeを書き換えキーとして使っていると思うので、bo.jsでcurrent_timeを探してください。でも、結局javascriptのソースコードが読めないと理解できないと思いますけどね。

qhtsige
質問者

お礼

>WEBページ完全」とすれはjsファイルもローカルに保存されます。 開発ツールでなくとも、こうすれば良いのですね。初めて知りました。 でも、*.jsファイルを全部見ましたが、current_timeは見つかりませんでした。他にPriceBord.filesが読めなかったのですが、これが肝心のような名前で残念です。 対応が一つでもわかれば、それを元に、javascriptを調べて見る気になるのですが。 それがわかっても、それと同じことをC++からどうやればできるかが問題になります。  少しづつ問題の所在がわかってきました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

追っかけていないので、どれが最初かは不明ですがbo.jsなどで$.post()やら$.ajax()やらしてますよね。なんか中国人が書いたようなコメントも見受けられますが。

qhtsige
質問者

お礼

scriptのbo.jsの中に、$.post()があるのですよね。 scriptの中を見るにはどうすればよいのですか。開発者ツールを動かしましたが、あまり使ったことがないので操作がわかりません。 クリックで要素を選択(左上向き矢印)しておいて、スクリプトタブで左ペインのbo.jsの行をクリックするのでしょうか?何も出てこない。 端的な例として、休日でも更新される日付時刻データに注目していただけるとありがたいです。 このソースにおいて、表示の際の該当部分は、秀丸エディタで現在824行目の <div id="current_time_container"><span id="current_time">----/--/-- --:--:--</span></div> これがscriptやajaxの何に相当するのでしょうか。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

HTMLとjsを見る限りJQueryでAjaxしまくっています。 まぁ、CppWebBrowserを駆使すれば出来るものを思いますが、私もWebBrowserを軽く知っているだけなので自信はありません。C++Builder系は未経験です。 「WebBrowser.Document プロパティ (System.Windows.Forms)」 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowser.document.aspx 「HtmlDocument メソッド (System.Windows.Forms)」 http://msdn.microsoft.com/ja-jp/library/69b0ah2f.aspx

qhtsige
質問者

お礼

重ねて質問で申し訳ありませんが、 >HTMLとjsを見る限りJQueryでAjaxしまくっています。 どの箇所がそうなりますか。ソースで最初に出てくる箇所を教えて下さい。タグの名前などで。 javascriptは使ったことがないのでわからないのですが、scriptはソース上になく、指定された場所を調べられたのでしょうか。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

そのサイトを教えてもらうほうが早そうです。 ちなみにWEBサーバーからの情報でリアルタイムに更新するにはページのリロードかAjaxぐらいしか選択肢はありません。

qhtsige
質問者

お礼

本来の使用はログインが必要ですので開示できかねますが、開いたことはありませんがデモ画面があるようです。今の時間帯(12-18)は使えませんが、本来ページと 同じかどうかはわかりませんが、同じ可能性はありそうです。 デモ画面の右側ペインの数値のみで、グラフは関係ありません。 http://min-fx.jp/bo/ ページのリロードではないことは判断できます。 Ajaxをその後さらに調べて、非同期javascriptXHTMLだそうで、ページの一部をリロードなしに更新できる技術だそうですね 。そのような動きであります。 理解を進めるには、そのような動きのテストページを作るのがよさそうですが、どんな技術、ツールを使っているのかを把握しておかねばなりません。またその場合ページをサーバに置かねばならないでしょうか。ローカルにテストできるかどうか?

qhtsige
質問者

補足

すみません。どうも、ソースの見方を誤っていたようです。 最初に例示した <LI style="WIDTH:14%" jQuery9999999="id"> は違っているようです。 例えばチケットの箇所は <td class="pr1 ticket">--</span></td> らしいのですが、これですと数値がそのまま埋め込まれているようにも思えます。(それなら簡単です) 再度、データが動いているときの状態を確認して見ます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

リアルタイムに表示が変化するならAjaxでしょう。 ただ、勝手に相手のサイトの表示情報を掠め取るのはサイトの利用規約違反の可能性があります。そこは大丈夫でしょか?

qhtsige
質問者

お礼

>リアルタイムに表示が変化するならAjaxでしょう。 このように判断された理由は何でしょうか。他に可能性はないのでしょうか。jQueryの文字とその使い方がその判断に大きく寄与することはありませんか。 >利用規約違反の可能性があります。そこは大丈夫でしょか? 再確認しましたが、そのよう記載はありません。ましてや個人利用です。 jQueryで検索すると、AJAXの"jQuery"なるツールの使い方はよくヒットしますが、そのHTML上での現れ方の情報は見つけられませんでした。それでどのような関係になっているのだろうとお尋ねしました。 質問の趣旨のご回答を引き続きお待ちします。

qhtsige
質問者

補足

補足です。AJAXでないと思った理由は、最初に表示するページを選択するステップがあるのですが、選択肢として ・ajax ・PC画面(IE) があり、PC画面を選択しているので、そう思いました。 ただ、PCでもAJAXを使っている可能性はあるかもしれませんが。 確認する方法は、ヘッダなどにあるでしょうか。

関連するQ&A