wget은 디렉토리의 모든 파일을 가져오고 index.html만 반환합니다.

wget은 디렉토리의 모든 파일을 가져오고 index.html만 반환합니다.

wget저는 bash를 처음 접했고 웹사이트의 모든 파일을 제가 작업 중인 서버로 전송 하려고 노력해 왔습니다 . 그러나 내가 얻는 것은 파일뿐입니다 index.html. 15분 동안 실행시켰는데 index.html 파일이 계속 다운로드 중이어서 종료했습니다. 파일 이후에 내 파일을 index.html다운로드할 수 있나요?

이것은 내가 시도한 코드입니다.

$ wget --no-parent -R index.html -A "Sample" -nd --random-wait \
   -r -p -e robots=off -U Mozilla --no-check-certificate \
   http://somewebsite.com/hasSamples/Sample0

Sample로 시작하는 하위 디렉터리의 모든 파일을 다운로드하려고 합니다. 나는 해결책을 찾기 위해 인터넷에서 많은 검색을 했고 이 시점에서 나는 당황했습니다. 아직 올바른 옵션 조합을 찾지 못했을 수도 있지만 도움을 주시면 대단히 감사하겠습니다. 코드에 대한 나의 이해는 다음과 같습니다.

  • --no-parent상위 디렉토리를 검색하지 않는다는 뜻입니다.
  • -R index.htmlindex.html 파일 다운로드가 거부되었다는 의미입니다. "index.html*"도 시도했지만 여전히 다운로드되었습니다.
  • -A "Sample"Bash의 Sample*과 약간 비슷합니다.
  • -nd디렉토리 대신 파일을 다운로드하는 것을 의미합니다.
  • --random-wait웹사이트에서 블랙리스트에 오르지 않도록 하세요
  • -r재귀 다운로드
  • -p정말 모르겠어
  • -e robots=offrobots.txt 파일 무시
  • U Mozilla사용자를 Mozilla처럼 보이게 만드는 것 같아요
  • 이는 --no-check-certificate웹 사이트에 필요합니다.

답변1

- "example"은 bash의 예제처럼 동작합니다*

내 독서에 근거한 것이 아닙니다 man wget.

  • -A acclist --accept acclist
  • -R 거부 목록 --거부 목록 거부

허용하거나 거부할 파일 이름 접미사 또는 패턴의 쉼표로 구분된 목록을 지정합니다. 와일드카드 문자 *, ?, [ 또는 ] 중 하나라도 acclist 또는 rejlist의 요소에 나타나는 경우,패턴으로 간주될 것입니다.접미사 대신.

따라서 와일드카드 없이 사용법은 bash glob 과 동일합니다 *.Sample.

Wget은 링크를 스캔하여 작동합니다. 이것이 아마도 파일을 다운로드하려고 시도하는 이유일 것입니다 index.html(내용이 무엇인지 말하지 않았지만 시간이 오래 걸릴 뿐입니다). 어딘가에서 시작해야 합니다. 더 자세히 설명하려면:URL은 다음과 같습니다.아니요파일 경로. 너할 수 없다웹 서버를 디렉터리 계층 구조인 것처럼 검색하여 "디렉토리에 있는 모든 파일을 제공하세요 foobar"라고 말합니다. 실제 디렉토리에 해당하는 경우 웹 서버 foobar(물론 파일 경로가 아닌 URL의 일부이므로 반드시 그럴 필요는 없음)가능한자동으로 생성된 index.html 목록 파일을 제공하도록 구성되어 파일 시스템을 탐색할 수 있다는 환상을 제공합니다. 그러나 이는 HTTP 프로토콜의 일부가 아니며 Apache와 같은 서버가 기본적으로 사용하는 규칙일 뿐입니다. 따라서 wget수행된 작업은 등을 검색한 index.html다음 <a href=해당 <img src=링크를 따라가며 동일한 작업을 재귀적으로 수행하는 것입니다. 이것이 wget의 "재귀적" 동작을 의미합니다. (반복하자면) 링크를 재귀적으로 검색합니다.서버의 파일 시스템에 대한 액세스 권한이 없으며 서버는 그러한 파일 시스템에 대한 정보를 제공할 필요가 없습니다..

.html로드하고 클릭하여 원하는 모든 항목에 액세스할 수 있는 실제 웹페이지가 있는 경우 해당 주소에서 시작하여 을 사용하세요 -r -np -k -p.

답변2

브라우저를 사용하여 이 페이지에 연결하면 어떻게 되나요?

아무 문제 없이 페이지를 탐색하고 있다면 뭔가 빠졌을 가능성이 높습니다.

이 페이지에서 브라우저를 확인 중일 수 있으며 Mozilla가 정답이 아닙니다. 다음에서 브라우저 문자열을 선택하세요.여기(Mozilla뿐만 아니라 전체 문자열) 작동하는지 확인해보세요.

그렇지 않은 경우 쿠키가 필요할 수 있으며, 쿠키를 홈페이지에 연결하여 wget저장하세요. 그런 다음 wget이 쿠키를 사용하여 페이지를 다운로드해 보세요.

--mirror미러링하려면 옵션을 사용해 보세요.

그래도 작동하지 않으면 연결과 페이지를 살펴보겠습니다. Firefox의 라이브 http 헤더 추가는 매우 멋진 도구입니다. 브라우저와 웹페이지 사이의 전체적인 통신을 볼 수 있습니다. 원하는 것을 얻으려면 wget을 사용하여 해당 동작을 모방해 보십시오.

관련 정보