wgetが*すべて*ダウンロードされたリンクを関連リンクに変換するように強制するにはどうすればよいですか?

wgetが*すべて*ダウンロードされたリンクを関連リンクに変換するように強制するにはどうすればよいですか?

すべてのJava APIリンクがダウンロードしたJava APIドキュメントのローカルバージョンを指す必要があるOracle Java Tutorialのオフラインバージョンを取得するには、次のwgetコマンドを使用しました(試してみると、25,000を超えるファイルをインポートします)。

wget -mkp -nH -nv -E  --accept-regex ".*javase/8/docs/api.*|.*javase/tutorial.*" http://docs.oracle.com/javase/8/

残念ながら、リンクのサブセットのみがローカルファイルを正しく指すように変換されます。以下のファイルはすべてjavase/tutorial問題ありませんが、ダウンロードしたAPIファイルを指すすべてのファイルはjavase/8/docs/apiこのローカルファイルを指していませんが、まだオンラインバージョンを指しています。

何の問題がありますか?

––––

1 チュートリアルのダウンロード可能なバージョンがあることはわかっていますが、その API リンクはオンライン Java API ドキュメントにのみリンクされます。

答え1

バグが見つかったようですwgetwget原因を特定するために、コマンドを何度も繰り返してみました。私の最初の考えは、正規表現がwgetこれを2つの別々のセットとして扱い、2つの間を結び付けないということです。私は一見同じように見えるファイルを取得し、オプションを長い形式に変換して個別に作成し(--mirrorは複合型)、ログファイルに追加し、元のファイルを保持するために正規表現ではなくバージョンを定式化しました。

wget --recursive --convert-links --backup-converted --page-requisites --no-host-directories --level=inf --adjust-extension --include /javase/tutorial,/javase/tutorialJWS,/javase/8/docs/api https://docs.oracle.com/javase/8/index.html 2>&1 | tee wget.log

ファイルを比較すると、すべてのリンクに表示されることがわかりました。いいえ変換されたコンテンツは、ソースソースの絶対リンクです。最初のすべての相対リンクは相対リンクのままです(実際の変換はありません)。出力では、wget関連ファイルを「変換」したと主張しますが、固定されていないタグだけがタッチされているように見えます。

--include一部のリンクを絶対(画像を含む)に設定した後、私が管理しているサイトで同じオプションと同等のパラメータを使用しました。同じ結果が得られます。絶対アドレスを持つ非アンカータグのみが変換され、絶対アンカーは影響を受けません。

プロジェクトの規模に応じて、リンクを相対リンクに変換することは、スクリプトを使用しても難しいように見える場合があります。 PerlMonkの投稿が見つかりました。HTMLファイルの絶対リンクを相対リンクに変更する直面する問題に合ったPerlスクリプトを使用してください。

まだテストしていませんが、セーフティネットでバックアップコピーを作成するオプションがあるので、試してみる価値があります。

その間、wget私のバージョンは次のとおりです。

$ wget --version
GNU Wget 1.14 built on linux-gnu.

+digest +https +ipv6 +iri +large-file +nls +ntlm +opie +ssl/openssl 

Wgetrc: 
    /etc/wgetrc (system)
Locale: /usr/share/locale 
Compile: gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/etc/wgetrc" 
    -DLOCALEDIR="/usr/share/locale" -I. -I../lib -I../lib 
    -fmessage-length=0 -grecord-gcc-switches -O2 -Wall 
    -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables 
    -fasynchronous-unwind-tables -g 
Link: gcc -fmessage-length=0 -grecord-gcc-switches -O2 -Wall 
    -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables 
    -fasynchronous-unwind-tables -g -lproxy /usr/lib64/libssl.so 
    /usr/lib64/libcrypto.so /usr/lib64/libz.so -ldl -lz -lz -lidn 
    ftp-opie.o openssl.o http-ntlm.o ../lib/libgnu.a 

関連情報