얻다-np
상위 디렉터리에서 파일을 가져오는 것을 비활성화하는 옵션이 있습니다 . 비슷하지만 더 유연한 것이 필요합니다. 고려하다:
www.foo.com/bar1/bar2/bar3/index.html
나는 모든 것을 얻고 싶지만 bar2
(!) "더 높은"(트리 계층 구조에서) 이상을 얻지 못합니다. 그래서 bar2
그것은 또한 가져와야 하지만 그렇지 않습니다 bar1
.
wget을 좀 더 선택적으로 만드는 방법이 있나요?
배경: 저는 유사한 논리적 구조(시작점, 위쪽, 아래쪽)를 가진 웹 사이트를 미러링하려고 합니다. 이 레이아웃에 더 적합한 다른 도구가 있으면 wget
알려주시기 바랍니다.
고쳐 쓰다
또는 가능한 상향 깊이를 지정하지 않으면 "이 URL 또는 해당 URL과 일치하지 않는 한 상위 항목이 없을 수도 있습니다".
업데이트 2
서버에는 어떤 구조가 있습니다. 그렇죠? 나무처럼 생각하시면 됩니다. 따라서 일반적으로 "--no-parent"를 사용하면 A 지점에서 시작하여 아래로 내려갑니다.
내 소망은 위로 올라갈 수 있는 것입니다. X 노드를 허용하거나 (100% 동일) 노드 B(거리 BA = X)까지 허용하는 것으로 표현됩니다.
모든 경우에 하강 규칙은 사용자 정의 상태로 유지됩니다(예: Y 수준으로만 하강).
어떻게 저장하나요? 실제로 이것은 실제로 문제가 되지 않습니다. wget
서버 구조는 기본적으로 다시 생성되므로 여기서는 두려워할 것도 없고 수정할 것도 없습니다. 따라서 두 단어로 말하면 평소와 같습니다.
업데이트 3
다음 디렉토리 구조 - 각 디렉토리에 R - R.html 등의 파일이 하나만 있다고 가정합니다. 물론 여러 페이지를 가질 수 있기 때문에 쉽습니다.
R
/ \
B G
/ \
C F
/ \
A D
/
E
A(A.html)는 시작점이며 X = 2입니다(따라서 B는 내가 얻고 싶은 최상위 노드입니다). 이 특정 예에서는 R.html 및 G.html을 제외한 모든 페이지를 가져오는 것을 의미합니다. A.html은 "시작점"이라고 불립니다.~ 해야 하다B가 아니라 B부터 시작하세요.
업데이트 4
업데이트 3부터 이름 지정이 사용됩니다.
wget 옵션 www.foo.com/B/C/A/A.html
문제는 디렉토리 B 이하에서 모든 페이지를 가져오는 옵션이 무엇인지입니다(A.html에서 시작해야 한다는 것을 알고 있음).
답변1
아직 시도하지는 않았지만 -I 및 -X를 사용하면 원하는 결과를 얻을 수 있습니다. 나의 첫 번째 시도는 다음과 같았습니다.
wget -m -I bar1/bar2 -X "*" http://www.foo.com/bar1/bar2/bar3/index.html
옵션 설명:
-m:
--mirror
Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets
infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l
inf --no-remove-listing.
-I: list
--include-directories=list
Specify a comma-separated list of directories you wish to follow when downloading. Elements of
list may contain wildcards.
-X: list
--exclude-directories=list
Specify a comma-separated list of directories you wish to exclude from download. Elements of list
may contain wildcards.
답변2
URL에 마지막 /를 추가해야 합니다. 그렇지 않으면 원하는 것을 얻을 수 없습니다.
모든 것을 얻고 싶다면www.myhostname.com/somedirectory그러면 구문은 다음과 같아야 합니다.
wget -r -nH http://www.myhostname.com/somedirectory/
무슨 일이 일어나는지 시도하거나 보는 데는 끝이 없습니다. 그런 다음 /로 시도해 보세요.
답변3
제 생각에는옳은여기에 대한 답변은 --no-parent
옵션입니다.
-np
--no-parent
Do not ever ascend to the parent directory when retrieving recursively.
This is a useful option, since it guarantees that only the files below
a certain hierarchy will be downloaded.
답변4
어쩌면 내가 뭔가를 놓치고 있을지도 모르지만, 그것이 당신이 원하는 것이라면
wget -c -np -r www.foo.com/bar1/bar2
나를 위해 작동합니다 (귀하의 예를 사용하여). 물론, 이러한 옵션을 사용하면 위의 모든 디렉토리 구조를 위에서 아래로 가져올 수도 있습니다 www.foo.com
. bar2
최고 레벨에 도달하고 싶다면 이렇게 하세요
wget -c -np -r -nH --cut-dirs=1 www.foo.com/bar1/bar2
-nH
제거 www.foo.com
하고 --cut-dirs=1
제거하면 현재 디렉터리와 해당 하위 디렉터리에 다운로드 bar1
됩니다 . bar2
자세한 내용은 man wget
읽기 쉽고 예제가 포함되어 있습니다.