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.txt
URLを含むファイルを作成して実行します。
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番目のオプションは、上記で作成した単純化された正規表現です。