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

버그를 발견한 것 같습니다 wget. wget원인을 파악하기 위해 명령을 여러 번 반복해 보았습니다 . 내 첫 번째 생각은 정규식이 wget이것을 두 개의 분리된 세트로 취급하고 둘 사이를 연결하지 않는다는 것입니다. 나는 겉으로는 동일해 보이는 파일을 얻고 옵션을 긴 형식으로 변환하여 개별적으로 만들고(--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 

관련 정보