한 웹사이트에서 여러 파일을 한 번에 다운로드하는 방법

한 웹사이트에서 여러 파일을 한 번에 다운로드하는 방법

웹페이지에서 여러 파일을 한 번에 다운로드하는 방법. 예를 들어 여기에서 모든 플러그인을 다운로드하고 싶습니다.페이지.

지금까지 내가 한 일은 파일 URL이 필요할 때마다 파일을 마우스 왼쪽 버튼으로 클릭하고 주소를 copy link address사용하여 붙여넣는 것입니다. wget이것은 매우 피곤한 일입니다.

답변1

원격 디렉터리에 동일한 파일 확장자(동일한 와일드카드 규칙)를 모두 다운로드하려면 다음 명령을 사용할 수 있습니다.

 wget -r -l1 --no-parent --no-check-certificate  -Aperl-*.rpm https://mirror.cpsc.ucalgary.ca/mirror/fedora/linux/releases/28/Everything/x86_64/os/Packages/p/ 

그러면 디렉토리에서 모든 perl-*.rpm 패키지가 다운로드됩니다.

답변2

links.txtURL이 포함된 파일을 만들고 실행합니다.

while IFS= read -r line; do
    wget "$line"
done <links.txt

그러면 wget파일의 각 링크에 대한 명령이 실행됩니다.

답변3

대상 페이지에서 반환된 HTML을 분석하고 bash 유틸리티를 사용하여 일부 작업을 수행할 수 있습니다. 이것은 작동합니다:

for i in $(curl https://sourceforge.net/projects/geoserver/files/GeoServer/2.10.1/extensions/  | grep net.sf.files | awk -F "=" '{print $2}' | jq '.[].full_path' | awk -F '"' '{printf("https://sourceforge.net/projects/geoserver/files/%s\n",$2)}') ; do curl -o $(echo $i | awk -F '/' '{print $NF}') -L ${i} ; done

답변4

대안으로 wget을 사용할 수 있습니다(휴대성이 떨어짐).

curl -sS https://sourceforge.net/projects/geoserver/files/GeoServer/2.10.1/extensions/ | sed -rn 's_^.*<a href="(https://sourceforge.net/projects/geoserver/files/.*/download)"$_\1_p' | wget -i - --trust-server-names
  • 컬은 파일 목록이 포함된 HTML 페이지를 검색합니다.
  • sed 명령은 URL을 찾아 제거합니다.
  • 그런 다음 wget은 파일 목록을 다운로드합니다.

다음과 같은 (다소 재사용 가능한) 스크립트에 넣으면 이해하기가 더 쉬울 수 있습니다.

#!/bin/bash
if  [[ -z "$1" || -z "$2" || -n "$3" && "$3" != 'test' ]]; then
    echo "Usage:    dlist <htmlsource> <regexp> [test]\n    <htmlsource> can be a local file or url\n   <regex> is the inner part to \"s_^.*${regex}.*\$_\1_p\"\n   [test] is the option to show the files to be download"
else
    regex="s_^.*$2.*\$_\1_p"
    if [[ "$3" == 'test' ]]; then
        echo "Using regex $regex:"
        regex="s_^.*$2.*\$_ \1_p"
        if [[ "$1" == http* ]]; then
            curl -sS "$1" | sed -rn "$regex"
        else
            sed -rn "$regex" "$1"
        fi
    elif [[ "$1" == http* ]]; then
        curl -sS '$1' | sed -rn "$regex" | wget -i - --trust-server-names
    else
        sed -rn "$regex" "$1" | wget -i - --trust-server-names
    fi
fi

그것으로 호출할 수 있습니다(이름이 지정되었다고 가정).목록):

dlist https://sourceforge.net/projects/geoserver/files/GeoServer/2.10.1/extensions/ '<a href="(https://sourceforge.net/projects/geoserver/files/.*/download)"'

첫 번째 옵션은 원하는 파일 목록의 URL입니다. 파일을 저장하고 명령줄에서 지정할 수도 있습니다.

그런 다음 파일 목록 웹 페이지(또는 다운로드한 복사본)에서 소스 코드를 보고 있는 경우 스크롤하여 검색할 URL을 제공하는 링크 목록을 찾으세요. 정규식을 만들 때 필요한 URL 부분을 대괄호로 묶고(http 앞에서 시작) URL의 변경된 부분을 .*로 바꿉니다.

두 번째 옵션은 위에서 만든 단순화된 정규식입니다.

관련 정보