ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3972118 ■ホームページ(HTML)の整形/変換
質問者:trueimage  
 いつもお世話になります。開発者としての質問です。

 インターネット上に、よく利用するホームページがあります。

【やりたいこと】
・このホームページを(自分用に)整形して印刷したいです。

【質問】
・パソコン(インターネット上のサーバーでも良い)からこのホームページに
アクセスして、自分用に整形フォーマットした形式で印刷をしたいです。
(直接でなくても一度、別のHTMLを作成してから、印刷しても全くかまいません)

 そこで、
 お勧めのプログラム言語かプラットフォーム環境を教えてください。

■プログラムから直接インタネット上のホームページ(HTML)をアクセスした経験がないので、アドバイスをお願い致します。
・どうやってインターネット上のHTMLをオープンすれば良いのか?
(Java か VisualBasic がお手軽なのか)
・どうやって HTML 中のある部分を認識すれば良いのか?

 よろしくお願いします。



《補足》 もう少し具体的に書くと...
URL: ​http://www.hoge.com/top/page1​ ページ1:【表A】
URL: ​http://www.hoge.com/top/page1​ ページ2:【表B】

===> プログラムを使って新たに【表X】を作成したいです。

元のホームページの【表A/B】は<Table>タグで決められた形で作成されていると
して良いです。

 
困り度:
  • 困っています
質問投稿日時:
08/04/24 11:16
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.3 先のテキスト解釈は美しくなかったですね。
もし、テーブルタグにIDがあるなら次のように取るのがオシャレかな。
例えば<TABLE ID='A'>の場合
doc.getElementById("A").outerHTML
回答者:nda23
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
08/04/25 21:56
この回答への補足Answer No1 に続き、No2, No3 ととても参考になります。
ありがとうございます!!

テーブルタグにIDを付けておくのがお洒落ですね。
今回は既存のURLのHTMLなので、ID が付けられないのでガリガリとsearchとsubstringメソッドで参照するしかないと思っています。

複雑な処理になりそうなので、言語は、JavaScript か Java + GWT (=> JavaScript) にしようか悩んでいます。
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.2 HTMLテキストから例えばTABLEタグを見つけるには
var i = text.search(/<table/i);
※indexOfだと大文字小文字を区別します。searchの方は正規表現に"i"が付いているので、大文字小文字を区別しません。

同様にTABLEタグの終わりを見つけるには
var j = text.search(/<\/table/i);
※"/"が正規表現の区切り文字にならないよう\を付けます。

後はsubstringメソッド等で切り分ければよいかと思います。
回答者:nda23
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
08/04/25 18:31
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 「やりたいこと」がよく分からないのと、実行環境が不明なので何とも言えませんが、あるURLのページを開いて、中身のHTML文を取り出すWindows直下で稼動するプログラムなら、以下のようにすれば可能です。

JavaScriptの例

//InternetExplorerを起動する
var ie = new ActiveXObject("InternetExplorer.Application");
//URLを開く
ie.Navigate2("​http://www.hoge.com/top/page1");
//ドキュメントの取得
var doc;
while( ie.ReadyState != 4 ) {
  WScript.Sleep(1);
}
doc = ie.Document;
//チェック
try {
  var x = doc.mimeType;
}
catch(e) {
  //エラーなので、画面を可視にして終了
  ie.Visible = true;
  WScript.Quit();
}
//テキストを取得する
var txt = doc.body.innerHTML;
//IEを終了する
ie.Quit();

この後、取り出したテキストを自分用に編集すればよいでしょう。
実際には2ヶ所のURLを拾うので、IE終了前にもう一度、Navigate2メソッド以降を実施して、次のHTMLテキストを取得します。
出来上がりはファイルに保存するか、IEでブランク画面を作り、そこへ書き込んで表示することもできます。
回答者:nda23
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
08/04/24 15:07
この回答への補足ご回答いただけて嬉しいです。

実行環境について書かなくて失礼しました。
■Windows環境での実行を考えています。
(あるいは、サーバー上でのCGI(Perl)でも簡単であればどちらでも良いです)。

JavaScriptの例を詳しく書いていただけて大変助かります。
お書きの通り、「URLを開く」ことをやりたかったです。

取得のテキスト(HTML)の中のプログラムで、ガリガリ直接パースする方法でも良いのですが、HTML の中のテーブル・タグを認識する方法があればもっと助かるのですが、XML でないので無理なんでしょうね。

ありがとうございました。
この回答へのお礼この回答にお礼をつける(質問者のみ)