자체 리디렉션 디렉터리에서 wget을 사용하여 임의 개수의 파일 다운로드

자체 리디렉션 디렉터리에서 wget을 사용하여 임의 개수의 파일 다운로드

wget을 사용하여 대학 웹사이트에서 다음과 같은 링크가 포함된 매우 많은 수의 PDF 파일을 다운로드해야 합니다(모든 링크를 수집하고 대조하는 것이 불가능하지는 않더라도 지루할 수 있음).

http://example.edu/path_to_directory/directory/foobar.pdf

다음 명령을 사용하고 있습니다.

wget -mk --no-check-certificate --load-cookies cookies.txt  http://example.edu/arbitrary_link_to_directory/directory/

불행히도 PDF가 포함된 실제 디렉토리는 각각 오류 페이지로 리디렉션되며 내가 얻는 것은 html 및 css 파일 묶음뿐입니다.

http://example.edu/path_to_directory/directory/

브라우저에서 하나를 다음으로 리디렉션합니다.

http://example.edu/path_to_directory/error/error.html

wget을 사용하여 문제의 모든 파일을 다운로드할 수 있습니까?

답변1

웹 사이트에서 여러 파일을 다운로드하기 쉽지 않은(또는 적극적으로 어렵게 만드는) 경우 다음과 같은 파일 URL 목록을 생성합니다.

lynx -dump -listonly $URL | awk '/\.pdf/ {print $2}' > /tmp/pdflist.txt

vi그런 다음 일반적으로 다운로드하고 싶지 않은 항목을 삭제하기 위해 파일을 편집하고 마지막으로 wget을 사용하여 항목을 모두 가져옵니다.

wget --input-file=/tmp/pdflist.txt

perl이는 간단한 작업에 잘 작동하고 보통 어려운 작업에도 충분히 잘 작동하는 경우가 많습니다. 하지만 복잡한 HTML 구문 분석 및 링크 따라가기(쿠키 사용 등)와 관련된 어려운 작업의 경우 모듈 을 사용하여 웹봇을 작성하겠습니다 libwww-perl( 일명LWP).

답변2

대학 웹사이트에 모든 PDF에 대한 링크를 제공하는 페이지가 있습니까? 아니면 PDF 파일 이름 목록을 어떻게 알 수 있나요?

이 경우 프로그래밍 방식으로 해당 페이지에서 링크를 가져온 다음 해당 목록을 자동으로 반복하고 wget 또는 다른 도구를 사용하여 다운로드하도록 scraper라는 스크립트를 작성해야 합니다. 스크레이퍼를 작성하려면 PHP 또는 Python을 제안합니다. 원본 웹사이트에서 최종 페이지 매김을 쉽게 관리할 수 있습니다. PHP를 사용하는 경우 다음을 사용하여 간단히 파일을 다운로드할 수 있습니다.

file_put_contents('destination_filename', file_get_contents('source_url');

관련 정보