1つのウェブサイトから複数のファイルを一度にダウンロードする方法

1つのウェブサイトから複数のファイルを一度にダウンロードする方法

Webページから複数のファイルを一度にダウンロードする方法。たとえば、ここからすべてのプラグインをダウンロードしたいと思います。ページ

これまでにやったことは、ファイル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です。ファイルを保存してコマンドラインで指定することもできます。

次に、ファイルリストWebページ(またはダウンロードしたコピー)でソースコードを表示している場合は、スクロールして検索するURLを提供するリンクのリストを見つけます。正規表現を作成するときに必要なURL部分を角かっこで囲み(httpの前で始まり)、URLの変更部分を. *に置き換えます。

2番目のオプションは、上記で作成した単純化された正規表現です。

関連情報