wget --mirror로 쿼리 문자열 이스케이프


15

wget --mirror --html-extension --convert-links사이트를 미러링하는 데 사용 하고 있지만 형식의 파일 이름이 많이 post.php?id=#.html있습니다. 브라우저에서 이들을 보려고하면 파일을로드 할 때 브라우저가 쿼리 문자열을 무시하기 때문에 실패합니다. ?파일 이름 의 문자를 다른 것으로 바꿀 수있는 방법 이 있습니까?


대답은 --restrict-file-names=windows올바르게 작동했습니다. 플래그 --convert-links--adjust-extension/ -E(이전에 --html-extension작동하지만 더 이상 사용되지 않는)와 함께 예상대로 작동하는 미러를 생성합니다.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example

답변:


16

--restrict-file-names옵션을 참조하십시오 . 이 특정 목적을 위해 의도 된 것은 아니지만 --restrict-file-names=windows다음과 같이 도움이 될 것입니다.

--restrict-file-names = modes

로컬 파일 이름 생성 중에 원격 URL에서 찾은 문자를 이스케이프해야합니다. [...]

"windows"가 제공되면 Wget은 \, |, /, :,?, ", *, <,> 문자와 0-31 및 128--159 범위의 제어 문자를 이스케이프합니다. Windows 모드에서 Wget은 : 대신 +를 사용하여 로컬 파일 이름으로 호스트와 포트를 분리하고? 대신 @를 사용하여 파일 이름의 쿼리 부분을 나머지와 분리하므로 www로 저장되는 URL입니다. 유닉스 모드에서 xemacs.org:4300/search.pl?input=blah는 Windows 모드에서 www.xemacs.org+4300/search.pl@input=blah로 저장됩니다.


2

다음과 같은 URL을 사용하면 브라우저가 잘 보입니다.

file:///tmp/example.com/post.php%3Fid=1.html

대신에

file:///tmp/example.com/post.php?id=1.html

참고 : 다운로드 한 파일의 내부 링크에 문제가있는 경우 다운로드가 완료되기 전에 wget을 종료했기 때문입니다. --convert-links 및 --html-extension (지정된 경우에만 적용)을 지정 했으므로 wget은 일반적으로? 대신 % 3F를 사용하도록 링크를 수정합니다. 그러나 다운로드가 끝나면 마지막에이 작업을 수행합니다. 중단 된 경우 링크가 수정되지 않았으므로이 상황에 처하게됩니다. 물론, 당신은 항상 링크를 통해 이동하고 수정하는 스크립트를 작성할 수 있지만 ...


이 같은 URL에 대한 중단없이, wget을 아주 정확하지 http://site.com/article.cgi?25로 저장됩니다 article.cgi?25.html에서 섹션 참조 2.7 gnu.org/software/wget/manual/wget.html#HTTP-Options
Tzury 바 Yochay

-2

wget에는 저장된 이름을 수정하는 옵션이 없습니다. 아마도 당신이해야 할 일은 스크립트를 작성하고 교체하는 것입니다. _ 또는 이와 유사한 것으로. Wget만으로는이 작업을 수행 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.