OK、これが私が必要なものです:
.html
すべてのファイルの拡張子があれば、ブラウザで簡単に認識して開くことができます。これは私が使用しているものです:
wget --recursive --no-clobber --page-requisites --convert-links --html-extension --domains wikispaces.com http://chessprogramming.wikispaces.com/
事は:
.css
ファイルや画像などはダウンロードされていないようです-少なくとも、実行したままのレベルまでは(OK、多分wouldプロセスが完了した場合はダウンロードされるため、これをスキップする場合があります)だから...何かアイデアはありますか?
まず、これはOSXのみの問題のようです。上記のコマンドはUbuntu14.04 LTSで使用でき、そのまま使用できます。いくつかの提案:
.css
ファイルや画像などはダウンロードされていないようです-少なくとも、実行したままのレベルまではダウンロードされます(プロセスが完了した場合はダウンロードされる可能性があるため、これをスキップする場合があります)
--domains wikispaces.com
と言うと、他のドメインにあるリンクされたCSSファイルをダウンロードしません。そのウェブサイトのスタイルシートのいくつかは、index.htmlのソースを示唆しているようにhttp://c1.wikicdn.com
にあります。
一部のWebサイトでは、リンクを使用してリンクされたファイル(参照画像)に直接アクセスすることを許可していません( このページ を参照)。あなたはウェブサイトを通してのみそれらを見ることができます。しかし、ここではそうではないようです。
Wgetは、HTMLの解析中にコメントを認識しないようです。 Wgetの実行中に次のように表示されます。
--2016-07-01 04:01:12-- http://chessprogramming.wikispaces.com/%3C%25-%20ws.context.user.imageUrlPrefix%20%25%3Elg.jpg
Reusing existing connection to chessprogramming.wikispaces.com:80.
HTTP request sent, awaiting response... 404 Not Found
2016-07-01 04:01:14 ERROR 404: Not Found.
ブラウザでリンクを開くと、ログインページに移動します。ファイルの名前は、コメントのどこかで発生したことを示しています。
-U somebrowser
を使用してクライアントを偽造し、ブラウザのふりをします。たとえば、-U mozilla
を追加して、Mozilla/Firefoxがページを要求していることをサーバーに通知できます。しかし、私はこの議論なしでサイトをダウンロードできるので、これはここでは問題ではありません。
--limit-rate=
および--wait=
引数を使用してダウンロード速度を制限し、個々のファイルの取得要求を生成するまで数秒待ちます。例えば.
wget -r --wait=5 --limit-rate=100K <other arguments>
getリクエストの間に5秒間待機し、ダウンロードレートを100Kbpsに制限します。繰り返しになりますが、サーバーはWebサイトをフェッチするためにダウンロード速度を制限する必要がなかったため、これはここでは問題ではありません。
ここで最も可能性のあるケースは(1)です。 --domains wikispaces.com
を--domains *
に置き換えて、再試行してください。どこに行くのか見てみましょう。少なくともCSSファイルをフェッチできるはずです。
HTML拡張子は追加されていません
コマンドを実行すると、HTML拡張機能が追加されます。
リンクは変換されません
私がここで完全に正しいかどうかはわかりませんが、サイトをミラーリングするときにリンクがすぐに機能することを期待しないでください。
HTTP getリクエストに引数を渡すと(たとえば、http://chessprogramming.wikispaces.com/wiki/xmla?v=rss_2_0
には引数v=rss_2_0
があります)、リクエストはサーバー上で実行されているスクリプト(PHPなど)で処理されます。引数は、引数に応じて正しいバージョンのスクリプトをフェッチするのに役立ちます。サイト、特にPHPで実行されるWikiをミラーリングしている場合、元の=をフェッチしない限り、サイトを正確にミラーリングすることはできません。 PHPスクリプト。PHPスクリプトによって返されるHTMLページは、そのスクリプトで表示されると予想されるページの1つの面にすぎません。正しいアルゴリズムgeneratesページはサーバーに保存され、元のPHPファイルをフェッチした場合にのみ正しくミラーリングされます。これは実行できません。 HTTPを使用します。そのためには、サーバーへのFTPアクセスが必要です。
お役に立てれば。
ロシアのソユーズロケットの答えからのオプション1は確かに私の場合の問題でした。実際、https://censoreddomain.com
ではなくhttps://www.censoreddomain.com
をリクエストしたため、問題が発生しました(www.
に注意してください)。 www.
を追加すると、wget
はサイト全体を喜んで削ってくれました。したがって、スクレイプしようとしているドメインの正規名と完全に一致するであることが重要です。
間違いは私のものだったので、この「キャッチ」はOSXだけでなくすべてのプラットフォームのwget
に当てはまると思います。