Web ページを完全にミラーリングするにはどうすればよいですか?
質問
いくつかの異なるサイトにいくつかの Web ページがあり、それらを完全にミラーリングしたいと考えています。これは、画像や CSS などが必要になり、リンクを変換する必要があることを意味します。この機能は、Firefox を使用して「ページを名前を付けて保存」し、「Web ページ、完了」を選択するのと似ています。ファイルと対応するディレクトリにわかりやすい名前を付けたいと考えています(例:myfavpage1.html、myfavpage1.dir)。
私はサーバーにアクセスできず、サーバーは私のページではありません。以下にサンプルリンクを 1 つ示します。 クリックしてください!
もう少し説明を...ミラーリングしたいページが約 100 ページあり (その多くは遅いサーバーからのものです)、Solaris 10 上でジョブを cron し、結果を 1 時間ごとに Samba マウントにダンプして、人々が閲覧できるようにします。そして、はい、明らかにいくつかの異なるフラグで wget を試しましたが、探している結果は得られませんでした。したがって、GNU wget ページを指定することはあまり役に立ちません。まずは簡単な例から始めましょう。
wget --mirror -w 2 -p --html-extension --tries=3 -k -P stackperl.html "https://stackoverflow.com/tags/perl"
このことから、次のことがわかるはずです。 https://stackoverflow.com/tags/perl フラグが正しければ、stackper.html ファイル内のページ。
解決
コマンドを実行してWebサイトのコピーを取得するだけなら、 wget 、 curl 、またはいくつかのGUIツール。 webreaper (Windowsではない< a href = "http://www.webreaper.net/" rel = "nofollow noreferrer"> WebReaper しかし、 webmirror および CPAN 。
作成中のPerlプログラム内でこれを実行しようとしている場合(答えに&quot; perl&quot;タグがあるため)、 CPAN が各ステップで役立ちます:
- コンテンツのダウンロード: LWP :: Simple 、 LWP :: UserAgent 、 WWW :: Mechanize
- リンク抽出: HTML :: LinkExtor 、 HTML :: SimpleLinkExtor
- リンクの書き換え: HTML :: Parser
幸運、:)
他のヒント
サイトのHTML化バージョンの場合、WinHTTrackを使用できます。これは、無料のオープンソースのGPLプログラムです。ページ、グラフィック、ドキュメント、zipファイル、映画などの事前レンダリングバージョンをプルダウンします。もちろん、これはミラーコピーであるため、データベース呼び出しなどの動的バックエンドコードは動的ではなくなります。
個人的に、前回これをやりたいと思ったときに、ブラウザキャッシュのコピーを作成するpythonスクリプトを作成し、ミラーリングするすべてのページを手動で訪問しました。非常にい解決策ですが、「ページをこすらないでください」というトリガーを引き起こさないという素晴らしい利点があります。アラーム。 Opera のリンクタブバー、&quot; manually&quot;のおかげです。数万ページのダウンロードは、あなたが思うほど難しくありませんでした。
「明確ではない」というコメントを再掲します。これらの Web ページ/サイトは自分で作成したもので、複数のサーバーに展開したいと考えていますか?その場合は、HTML で相対参照を使用すれば問題ありません。または、 を使用して各サイトで調整します。しかし、相対性理論は実際に進むべき道です。
それとも、Web サイト (Stack Overflow ホームページ、perl.com など) をダウンロードして、コンピュータ上にローカル コピーを置きたいと言っていますか?私もダニエルさんの意見に同意します。wget を使用してください。
ジム
次のように、wget gnuツールを使用してサイト全体を取得できます。
wget -r -p -np -k URL
または、perlを使用する場合は、これらのモジュールを試してください:
-
LWP :: Simple
-
WWW :: Mechanize
wgetが複雑な場合、またはlinuxboxを持っていない場合は、常にWebZipを使用できます
優れたプロキシサーバーが提供するキャッシュ機能が必要なようです。
たぶん、SQUIDのようなものを調べますか?それができると確信しています。
これは、プログラミングというよりは、システム管理者タイプの質問です。
ほとんどの最新のWebサイトでは、フロントエンドはストーリーのほんの一部しか伝えていません。 html、css、およびjavascriptを除去するツールに関係なく、サーバーに含まれるコア機能が失われます。
または多分あなたは何か他のものを意味していた。