1. Windowsのコマンドラインからファイルに記録されたjavascriptを実行する。
2. そのscriptでパラメータで渡されたURLにアクセスし、HTMLを取得する。
3. 取得したHTML内の要素に対してjquery(#IDなどをつかって)を使ってアクセスし文字列処理を行う。
4. 結果をサーバ側にデータをPOST
(無理だと思うのですがローカルのファイルに直接出力できるとなおよろし)
端的にいうとjavascriptとjqueryライブラリ(または似たようなもの)をつかって
HTMLの要素にアクセスし、整形するようなスクレーピング?プログラムを
作成したいということです。
(DOMアクセスできるものがあるのですがjqueryのような扱いやすさがないので)
*windowsコマンドラインで動くものであればmshta.exeでなくともかまいません
id:hasegawayosukeの変態スクリプトを使うと出来ます。
// ユーティリティ関数 var _util = { cat : function(f){return (new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile(f,1,false).ReadAll();} }; // 偽 window、偽document、グローバルオブジェクトの準備 (function(){ if( typeof( document ) == "undefined" ){ document = new ActiveXObject( "htmlfile" ); document.write("<html></html>"); } if( typeof( window ) == "undefined" ) window = document.parentWindow; if( typeof( alert ) == "undefined" ) //alert = window.alert; alert = function(s){ return window.alert( s )}; if( typeof( confirm ) == "undefined" ) confirm = function(s){ return window.confirm(s) }; if( typeof( location ) == "undefined" ) location = window.location; if( typeof( navigator ) == "undefined" ) navigator = window.navigator; if( typeof( clearInterval ) == "undefined" ) clearInterval = function(id){ return window.clearInterval( id ); }; if( typeof( clearTimeout ) == "undefined" ) clearTimeout = function(id){ return window.clearTimeout(id); }; if( typeof( setInterval ) == "undefined" ) setInterval = function(code, interval){ return window.setInterval(code, interval); } if( typeof( setTimeout ) == "undefined" ) setTimeout = function(code, delay){ return window.setTimeout(code, delay); } })(); // jQueryの読み込み eval( _util.cat( "jquery-1.3.2.js" ) ); var complete = 0; $.ajax( { url : "http://q.hatena.ne.jp/1259814347", dataType : "text", type : "get", async : true, success : function( text ){ alert($('h1.question-header', $(text)).text()); complete = 1; } } ); for( var i = 0; i < 100; i++ ){ WScript.Sleep( 30 ); if( complete == 2 ) break; }
コマンドプロンプトから
C:\>cscript hasegawayosuke-daisuki.js
とすると、このページの質問文がスクレイピングされメッセージボックスで表示されます。
※スクリプト名は気にしないで下さい。
WSH(Windows Scripting Host)で実現できます。
言語は、VBScriptまたはJScriptです。
前者は拡張子がvbs、後者はjs
1.
コマンドラインからたたくには、
http://d.hatena.ne.jp/seiunsky/20081130/1228066957
cscript test.js 1 aiueo "引数"
のようにします。
2.
HTMLを取得するには、
XMLHttpRequest オブジェクトを使用します。
http://webos-goodies.jp/archives/50548720.html
3.jquery の使用は難しいでしょう。
できないとは言い切れないので明言は避けます。
それと、HTMLのDOMをパースできるかどうか不明です。XMLなら可ですが。
4.
XMLHttpRequest オブジェクトでPOSTすればいいです。
また、WSHなので、ローカルのリソースにアクセスできるので、ファイルに保存も可能です。