wget
문제는 다음과 같습니다 .
페이지에 사용자 친화적인 이름을 지정하세요.
http://domain/wiki/Section/Home, http://domain/wiki/Section/Not+Home http://domain/wiki/Section/Other+page
일부 페이지에서는 쿼리 문자열을 사용합니다.
http://domain/wiki/Section/Home?one=value&other=value
어떤 이유로 인해 백업될 수 있는 일부 파일의 확장자는 다음과 같습니다.
.1
(1번 - n번) 예를 들어styles.css.1
,javascrip.js.2
재귀적으로 다운로드하여 폴더에 저장하고 싶지만 쿼리가 있는 파일은 피하고 Home?query
싶습니다 Home
. 이에 대한 패턴을 시도했지만 --reject
제대로 작동하지 못했습니다.
.1,.2,... .n
긴 숫자 문자열을 추가하면 확장을 피할 수 있지만 더 좋은 방법이 있기를 바랍니다.
이것은 wget
:
wget \
--page-requisites \
--no-parent \
--no-host-directories \
--no-directories \
--convert-links \
--load-cookies wget_cookies.txt --cookies=on --keep-session-cookies \
-P WikiFolders/pages/ \
-e robots=off \
-r \
--reject='1,2,3,4,5,6,7,8,9,*\\?*' \
--content-disposition \
--no-check-certificate \
http://domain/wiki/Section/
이런 식으로 실행하면 실제로 사이트에 액세스할 수 있지만 일부에서는 속도가 정말 느립니다.
참고: 쿼리가 포함된 파일을 방지하기 위해 시도했지만 *\\?*
작동하지 않았습니다.
다운로드 후 콘텐츠를 삭제합니다.
find WikiFolders/pages/ -iname "*\\?*" -delete
하지만 이번에도 속도가 정말 느리고 많은 콘텐츠를 다운로드해야 합니다.
먼저 이미지, CSS 및 js를 제외하고 다운로드하고 추가 wget HTML을 사용하는 방법을 생각했지만 HTML
파일에 확장자가 없으므로 작동하지 않습니다.
답변1
기호를 사용하여 []
숫자와 문자의 범위를 지정할 수 있습니다. 여러 번 반복하세요.
*[0-9],*[0-9][0-9],*[0-9][0-9][0-9]
|____||__________||_______________|
| | |
| | +---------- Reject ending with 000 to 999
| +------------------------- Reject ending with 00 to 99
+--------------------------------- Reject ending with 0 to 9
이는 와 함께 사용할 수도 있습니다 --accept
.
쿼리 링크의 경우 필터링할 수 있는 방법이 없습니다. 그러나 지정하면 *\?*
파일이 삭제됩니다 .뒤쪽에다운로드되었습니다. 따라서 대역폭과 다운로드 시간을 사용하여 생활해야 하지만 나중에 정리할 필요는 없습니다.
요약하자면, 아마도 다음과 같을 것입니다:
--reject='*.[0-9],*.[0-9][0-9],*\?*'
이것이 충분하지 않다면, 앞서 언급한 도구와 같은 다른 도구를 살펴봐야 합니다.중복 가능성귀하의 질문 아래에 링크를 걸어주세요.
답변2
--reject-regex "(.*)\?(.*)"
설명된 옵션을 사용하면 쿼리 링크 다운로드를 피할 수 있습니다.wget을 사용하지만 URL 매개 변수는 무시합니다.