皆様、お世話になっています。
ただいま、ブラウザの作成を勉強中です。下記のサイトを参考にしています。
http://delphi.sakura.vg/index2.html
WebBrowserコンポーネントの機能には驚いています。
ついては、表示したWebページを、保存する方法をご指導頂きたいのですが。
または、参考になるサイトをご存じならご紹介して頂きたいです。
よろしくお願い致します。m(__)m
>ついては、表示したWebページを、保存する方法をご指導頂きたいのですが。
まず,ご自分でいろいろ考えてみてはいかがでしょうか.
まず,Webページというのはどのようにして表示されているかといいますと,
html言語(だったかな)で書かれています.自分で簡単なWebページのコード
を書いて,実際に表示しみるといいでしょう.
つまり,そのページと同じコード(画像がある時はそれも)が必要です.
リンクがあれば,そのリンクに該当するものも保存する必要があるでしょう.
その際,ディレクトリなどの用語や仕組みも知る必要もあるでしょう(..\等)
そうすると,どんな動作をするコードが必要かも見えてくると思います.
理屈はいいから,具体的なコードがほしいんだ!!
というのであれば,他の方のレスをお待ち下さい.
Mr.XRAY さん、早速のアドバイスをいただきありがとうございます。
一応、Webページの作成も練習のつもりで自分で作成した貴重な資料等はWordではなくHTML文で作成して保存するように心がけています。
ブラウザで表示したデータは"Temporary Internet Files"に一時保管されますが、これらのファイルの詳細をみると、読み込んだアドレスがパスとして記録されていることが解ります。
しかし、ダウンローダーやWeBox(スクラップブックソフト)など、"Temporary Internet Files"に保管されてから拾い集めているとは考えられないものですから、何か他の方法があるに違いないと思った次第です。
Webサイトを探してはいるのですが、なかなかこの件は見つけることができません。ず〜と以前、インターネットから読み込んでいるデータは「・・パイプから出力され・・」というのを読んだような記憶があります。
その時は気にもとめませんでしたから、失念しました。
また、よろしくお願い致します。m(__)m。
とりあえず落ち着きましょう。
WebブラウザとはTCP/IPプロトコルでファイルの送受信を行いそれをhtml文章に則り表示を行う複合業を成し遂げているものです。
>>ダウンローダーやWeBox(よく知ってます^^)
これらは通常"Temporary Internet Files"で該当ファイルを探してファイルが存在しない場合、直接http経由でファイルをダウンロードするという手段をとります。
何れにせよhtmlに書かれているファイルへのリンクを抽出する作業は必須です。
つまりこの作業をまとめると
1.rootとなるhtmlを入手
2.そのhtmlからSRCリンクを抽出
3.リンク対象がtmpフォルダに存在しているか確認
3a.存在した場合そのファイルをコピー
3b.存在しない場合ファイルをダウンロード
4.1へのSRCリンクを修正
こういう風に4個のプロセスに分類するとネットで充分な情報が得られます。
正直初心者向けではありません。(これができれば脱初心者かな?)
メラトニンさんがレスした内容の一部でも知ってほしかったんですが,
例えば以下は,IEDownLoadというコンポーネントを使用した簡単な例です.
tmpフォルダは使用していませんが,手順はほぼ同じです.
つまり,このような作業が必要だということです.
//=============================================================================
// サイトの情報を取得する例
// (ページのソースと画像のみ)
// IEDownLoadコンポーネントを使用
// http://www.euromind.com/iedelphi/iedownload.htm
//=============================================================================
procedure TForm1.Button3Click(Sender: TObject);
var
AppPath : String;
BaseUrl : String;
AUrl : String;
ImagePath: String;
FileDir : String;
FilePath : String;
begin
//保存先はこのアプリのフォルダ
AppPath :=ExtractFilePath(Application.ExeName);
//htmlソースコードのダウンロード
BaseUrl:='http://homepage2.nifty.com/Mr_XRAY/';
FilePath:=AppPath+'私のサイト.html';
IEDownload1.Go(BaseUrl,FilePath);
//画像を取得(画像名はhtmlソースを解析して<image srcタグから取得)
//取得するページより上にある場合は工夫が必要
//htmlソースの解析方法はWebにいろいろある
ImagePath:='Delphi/plSamples/Images/plSamples1.gif';
FilePath :=AppPath+
StringReplace(ImagePath,'/','\',[rfReplaceAll]);
//保存フォルダを作成(ForceDirectriesにはFileCtrlが必要)
ForceDirectories(ExtractFileDir(FilePath));
AUrl:=BaseUrl+ImagePath;
IEDownload1.Go(AUrl,FilePath);
end;
ごちゃごちゃ書きましたが,結局WebページをHDDに保存するということは,
HTMLのソースコード,そしてその中で表示している画像などを,HDDに保存
するということなんです.
理屈は簡単ですが,実現は結構困難です.でも,この理屈を理解しないこと
には始まりません.
メラトニンさん、Mr.XRAYさん、重ね重ねのご指導ありがとうございました。
質問が、膨大なことなのか、些細なことなのか、重大なことなのか、高度なレベルなのか、まだ判断ができない私のレベルですのでお許し下さい。
かなりハイレベルな質問であると解りました。
あまりこの件の解説サイトが無いのもうなずけます。
どういうことをやっているのだというのが解り、もやもやしていたのがすっきりしました。(もちろん実際のコーディングが出来る出来ないは別にして、こつこつやってみます。)
ありがとうございました。また教えてくださいm(__)m
ツイート | ![]() |