ログインして色々な数値をPOSTしてセッション等も維持されないと表示されないページで、尚且つSSLで、尚且つ新規ウィンドウがポップアップして表示されるページがあります。
尚そのページにはフレームが入っており、Javascriptでフレーム内がレンダリングされるようになっています。
PHP,Mysql,UWSC言語等はわかるのですが、Javascriptで処理された後の文字列はPHPなどよりブラウザ関連で処理されるものなのでJava等が向いているのかと思います。
Microsoft .NET Framework 4.5を利用してEXE形式の自作簡易ソフトで取得していた方もいたのですが、その際は簡易ブラウザ的なものを使用し、該当ページまでは手動で進み、あとはボタンを押すとそのページでレンダリングされた、フレーム内含むソースが取得出来ていました。
あまり詳しくないのですが、例文等頂ければ参考にしてトライしていきたいと思っていますので、極力そのまま使えるくらい具体的な方法を教えて頂けますと幸いです。
宜しくお願い致します。
javascript で可能だと思います。
フレームの内容が分かりませんので、仮にフレーム内にある id が data という要素の内容が変化したときに表示を行うようなスクリプトになっています。
表示されている内容を監視しているだけですのでサーバには負荷をかけません。
ブックマークレットでも Greasemonkey でも実行可能です。
(function () { // ウィンドウの右上に値を表示する function display_data(v) { var output_area = document.getElementById("output"); if (! output_area) { output_area = document.createElement("div"); output_area.id = "output"; output_area.style.padding = "1ex"; output_area.style.backgroundColor = "#eeffee"; output_area.style.border = "2px solid green"; output_area.style.position = "absolute"; output_area.style.top = 0; output_area.style.right = 0; document.documentElement.appendChild(output_area); } e.innerHTML = v; } // フレーム id="f1" の中にある id="data" のエレメントを監視する var watch_function = (function() { var before_value; return function watch_data() { var f1_frame = document.getElementById("f1"); var f1_window = f1_frame.contentWindow; var target_element = f1_window.document.getElementById("data"); var value = target_element.innerHTML; // 値が前回と異なっていた場合に処理をする if (before_value != value) { display_data(value); console.log(value); before_value = value; } } })(); // 1秒間隔で監視開始 setInterval(watch_function, 1000); })();
Selenium でブラウザ操作を自動化する、キーボードやマウスの操作をマクロとして保存できるブラウザ拡張などでは駄目なのでしょうか…?
なお、以下についての情報がなければ誰も具体的なコードは書けないと思います。
* 「とあるサイト」のURL
* スクレイプしたい対象のデータ(ページの HTML すべてなのか、特定の DOM なのかなど)