wget은 확장자가 없는 파일을 재귀적으로 처리합니다.

wget은 확장자가 없는 파일을 재귀적으로 처리합니다.

wget문제는 다음과 같습니다 .

  1. 페이지에 사용자 친화적인 이름을 지정하세요.

    http://domain/wiki/Section/Home, 
    http://domain/wiki/Section/Not+Home
    http://domain/wiki/Section/Other+page
    
  2. 일부 페이지에서는 쿼리 문자열을 사용합니다.

    http://domain/wiki/Section/Home?one=value&other=value
    
  3. 어떤 이유로 인해 백업될 수 있는 일부 파일의 확장자는 다음과 같습니다..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 매개 변수는 무시합니다.

관련 정보