並列 wget はありますか? fping のようなものですが、ダウンロード専用ですか?

並列 wget はありますか? fping のようなものですが、ダウンロード専用ですか?

puf (Parallel URL fetcher) しか見つかりませんでしたが、ファイルからURLを読み取ることができませんでした。

 puf < urls.txt

も動作しません。

サーバーにインストールされているオペレーティング システムは Ubuntu です。

答え1

使用GNU パラレル

$ パラレル -j${ジョブ}wget < urls.txt

またはxargsGNU Findutils

$ xargs -n 1 -P${ジョブ}wget < urls.txt

ここで、は同時に実行を許可する${jobs}の最大数です(の行ごとに1 つの呼び出しを取得するには に設定します)。/がない場合、は CPU コアと同じ数のジョブを一度に実行し (ネットワーク IO によって制限されている場合は必ずしも意味がありません)、 は一度に 1 つずつ実行されます。wget-n1wgeturls.txt-j-Pparallelwgetxargs

parallel優れた機能の 1 つは、xargs同時に実行されているジョブの出力を分離しておくことですが、それを気にしない場合は、xargsプリインストールされている可能性が高いです。

答え2

答え3

これは、Python と pycurl ライブラリを使用して実装できます。pycurl ライブラリには、複数の同時接続を可能にする独自の偶数ループを実装する「multi」インターフェイスがあります。

ただし、インターフェースは C に似ているため、他のより「Python 的な」コードと比較すると少し扱いに​​くいです。

私は、この上にもっと完全なブラウザのようなクライアントを構築するラッパーを書きました。これを例として使用できます。pycopia.WWW.クライアントモジュール。HTTPConnectionManager はマルチインターフェースをラップします。

答え4

GNU Parallel のマニュアル ページの一部には、並列再帰 wget の例が含まれています。

https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer

HTML は 2 回ダウンロードされます。1 回はリンクの抽出用、もう 1 回はディスクへのダウンロード用です。その他のコンテンツは 1 回だけダウンロードされます。

再帰性が必要ない場合、ephemient の答えは明白に思えます。

関連情報