파일 다운로드를 자동화하는 방법은 무엇입니까?

파일 다운로드를 자동화하는 방법은 무엇입니까?

나는 책에 있는 대부분의 예술 작품에 대한 고해상도 스캔의 디지털 버전에 액세스할 수 있는 패스가 있는 책을 받았습니다. 놀라운! 불행하게도 이들 모두의 프리젠테이션은 각각 jpg의 zip 파일에 대한 링크가 포함된 8개의 이미지로 구성된 177페이지입니다. 탐색하는 것은 매우 지루하며, 앉아서 각 파일을 개별적으로 클릭하는 것보다 한 번에 모든 파일을 얻을 수 있기를 바랍니다.

archive_bookname/index.1.htm - archive_bookname/index.177.htm 각 페이지에는 파일에 대한 8개의 링크가 있습니다.

<snip>/downloads/_Q6Q9265.jpg.zip, <snip>/downloads/_Q6Q7069.jpg.zip, 등의 파일에 연결합니다 <snip>/downloads/_Q6Q5354.jpg.zip. 순서대로 진행되지 않습니다. 상위 /downloads/폴더의 디렉터리 목록을 가져올 수 없습니다.

또한 파일은 로그인 벽 뒤에 있으므로 브라우저가 아닌 도구를 사용하는 것은 세션 정보를 다시 만드는 방법을 모르면 어려울 수 있습니다.

나는 wget을 조금 살펴봤지만 꽤 혼란스럽고 이것이 나에게 도움이 될지 전혀 모릅니다. 이 문제를 해결하는 방법에 대한 조언이 있습니까? 자동으로 이 작업을 수행할 수 있나요?

답변1

다음을 사용하여 입력 HTML 파일을 지정할 수 있습니다.

wget -F -i <file>

따라서 HTML 파일을 덤프하고 이를 통해 반복할 수 있습니다
(상대 링크에 대한 기본 URL을 추가했습니다).

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

대안적으로

어떤 방법으로든 링크를 파일(개행으로 구분)에 덤프하고 다음을 수행할 수 있습니다.

wget -i <url-file>

해당 링크로 이동하는 좋은 방법은 다음과 같습니다.

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

아마도 'url-file'에 추가되는 for 루프에 있을 것입니다.

답변2

파이썬을 사용하는 것이 더 쉬울 수도 있습니다. 그래서 이것은 Python을 사용한 솔루션입니다. Python을 사용할 수 없다면 무시하세요. :)

웹사이트를 스크랩하는 것이 합법이라고 가정합니다.

루프를 통해 간단한 Python 스크립트를 작성하고 archive_bookname/index.1-177.htm다음을 사용하여 스크랩합니다.아름다운수프, CSS 클래스 선택기 또는 간단한 정규식 일치를 사용하여 링크를 찾은 다음urllib.urlretrieve()파일을 얻으려면. 그게 내가 할 방법이야.

답변3

아니면 단순히 Perl과 www::mechanize라는 뛰어난 모듈을 사용할 수도 있습니다. 무언가를 하나로 묶는 것은 정말 간단하며 공식 CPAN 문서에는 수많은 예제가 있습니다.

관련 정보