디렉토리를 다운로드하기위한 CURL


38

CURL을 사용하여 전체 웹 사이트 디렉토리를 다운로드하려고합니다. 다음 명령이 작동하지 않습니다.

curl -LO http://example.com/

오류를 반환합니다 : curl: Remote file name has no length!.

그러나 내가 이것을 할 때 : curl -LO http://example.com/someFile.type그것은 효과가 있습니다. 지정된 디렉토리의 모든 파일을 다운로드하는 방법에 대한 아이디어가 있습니까? 감사.

답변:


33

원하는 디렉토리 만 가져 오기 위해 부모가 없으며 재귀를 포함하여 항상 나를 위해 작동합니다.

 wget --no-parent -r http://WEBSITE.com/DIRECTORY

1
이것이 정답입니다.
Juan Jimenez

git에서 폴더를 다운로드하려고합니다. 나는 노력 wget --no-parent -r http://WEBSITE.com/DIRECTORY도없이 --no-parent- 작동하지 않았다.
Sam-T

32

HTTP에는 실제로 디렉토리 개념이 없습니다. 처음 세 개 ( http://example.com/) 이외의 슬래시 ..는 상대 URL 을 제외하고 특별한 의미가 없습니다 . 따라서 서버가 특정 형식을 따르지 않으면“지정된 디렉토리에있는 모든 파일을 다운로드”할 방법이 없습니다.

전체 사이트를 다운로드하려면 기본 페이지의 모든 링크를 재귀 적으로 탐색하는 것이 가장 좋습니다. 컬은 할 수 없지만 wget은 할 수 없습니다. 이것은 웹 사이트가 너무 동적이 아닌 경우 작동합니다 (특히 wget은 Javascript 코드로 구성된 링크를 보지 못합니다). 로 시작 wget -r http://example.com/하여 wget 매뉴얼의“재귀 검색 옵션”및“재귀 수락 / 거부 옵션”에서 관련 옵션 (재귀 깊이, 제외 목록 등)을 확인하십시오.

웹 사이트에서 자동 다운로드를 차단하려는 경우 사용자 에이전트 문자열 ( -U Mozilla) 을 변경하고 무시해야합니다 robots.txt(빈 파일을 작성 example.com/robots.txt하고 -nc옵션을 사용하여 wget이 서버에서 다운로드하지 않도록하십시오).


wget이 어떻게 할 수 있습니까? ??
Srikan

@Srikan wget은 HTML을 구문 분석하여 HTML에 포함 된 링크를 찾고 해당 링크를 재귀 적으로 다운로드 (선택)합니다.
질 'SO-정지 존재 악마'

파일에 내부 링크가 없으면 재귀 다운로드가 모든 파일을 가져 오지 못합니다. 일부 txt 파일의 HTTP 폴더가 있다고 가정 해 봅시다. 모든 파일을 성공적으로 가져옵니다. 이 의견 다음에 해보도록하겠습니다
Srikan

@Srikan HTTP에는 디렉토리 개념이 없습니다. 재귀 다운로드는 웹 페이지에서 링크를 따라가는 것을 의미합니다 ( 웹 서버가이를 수행하는 경우 서버가 디렉토리 목록을 표시하기 위해 생성 한 웹 페이지 포함 ).
질 'SO-정지 존재 악마'

wget은 robots.txt를 플래그와 함께 무시하도록 지원합니다 -e robots=off. 또는로 거부하여 다운로드하지 않도록 할 수 있습니다 -R "robots.txt".
Ryan Krage

17

이 경우 curl최고의 도구는 아닙니다. 다음 wget과 같이 -r인수 와 함께 사용할 수 있습니다 .

wget -r http://example.com/ 

이것은 가장 기본적인 형태이며 추가 인수를 사용할 수도 있습니다. 자세한 내용은 manpage( man wget)를 참조하십시오 .


5

불가능합니다. 웹 서버가 디렉토리의 내용을 사용자에게 반환 할 수있는 일반적인 방법은 없습니다. 대부분의 서버는 디렉토리의 HTML 색인을 생성하지만 (구성된 경우)이 출력은 표준이 아니며 어떠한 수단도 보장하지 않습니다. 이 HTML을 구문 분석 할 수 있지만 형식이 서버에서 서버로 변경되며 항상 활성화되지는 않습니다.


Site Sucker라는이 앱을보십시오. sitesucker.us . 그들은 그걸 어떻게 햇어?
Foo

그들은 HTML 파일을 파싱하고 그 안의 모든 링크를 다운로드합니다.
Brad

사용 wget또는 curl?
Foo

7
@Brad : curl은 HTML을 구문 분석하지 않지만 wget은 정확하게 이것을 재귀 검색이라고합니다.
Gilles 'SO- 악마 그만

1
아, 잘 고쳐 졌어요! gnu.org/software/wget/manual/html_node/… OP는 여전히 원하는 것을 얻지 못한다는 것을 알고 있어야합니다. 그것은 반환 된 페이지에있는 링크 만 따릅니다.
Brad

2

Firefox 확장 프로그램 DownThemAll!을 사용할 수 있습니다. 한 번의 클릭으로 디렉토리의 모든 파일을 다운로드 할 수 있습니다. 또한 사용자 정의 할 수 있으며 다운로드 할 파일 형식을 지정할 수 있습니다. 이것이 내가 찾은 가장 쉬운 방법입니다.


0

여기에서 웹 사이트 리퍼를 사용하면 모든 것을 다운로드하고 로컬 사용을 위해 내용 / 내부 링크를 수정합니다. 좋은 것은 여기에서 찾을 수 있습니다 : http://www.httrack.com

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