4

Webサイトのコンテンツ(HTMLページのセット)をディスクに書き出すことなくメモリに直接ダウンロードすることは可能ですか?

それぞれ24Gがインストールされているマシンのクラスターがありますが、ディスククォータによって数百MBに制限されています。wget内容をディスクに保存せずに、出力をある種のメモリ内構造にリダイレクトすることを考えていました。他のオプションは、の独自のバージョンを作成することwgetですが、パイプを使用してそれを行う簡単な方法があるかもしれません

また、このダウンロードを並行して実行するための最良の方法は何でしょうか(クラスターには> 20ノードがあります)。この場合、ファイルシステムは使用できません。

4

4 に答える 4

13

wgetのダウンロードオプションを参照してください:

'-Oファイル'</p>

'--output-document = file' </ p>

ドキュメントは適切なファイルに書き込まれませんが、すべてが連結されてファイルに書き込まれます。'-'がファイルとして使用されている場合、ドキュメントは標準出力に出力され、リンク変換が無効になります。(「./-」を使用して、文字通り「-」という名前のファイルに出力します。)

ファイルをPerlプログラムに読み込みたい場合は、wgetバッククォートを使用して呼び出すことができます。

実際に何をする必要があるかによっては、 LWP::Simpleを使用するだけで取得できる場合がありますget

use LWP::Simple;
my $content = get("http://www.example.com/");
die "Couldn't get it!" unless defined $content;

更新:FuseFuse.pmを使用してPerlで独自のファイルシステムを実装できるとは思いもしませんでした。Fuse::InMemoryも参照してください。

于 2010-01-11T20:55:11.640 に答える
5

あなたは根付いていますか?を使用できますtmpfs

編集をやり直してください。CPUに縛られることはなく、すべてのマシンを使用する必要はありません。xargs -n SOME_NUMBERいくつかあると仮定して、ルートURLのリストを分割するために使用できます。

ただし、メモリの共有に熱心な場合は、クラスターmemcacheをセットアップし、memcachefsを使用してすべてのマシンにマウントできます

于 2010-01-11T20:54:47.877 に答える
5

a)すでにPerlを使用している、b)HTMLをダウンロードしたい、c)解析したい場合は、常にLWPHTML::TreeBuilderをお勧めします。

于 2010-01-11T21:00:10.990 に答える
2
wget <url> -O -

URLの内容を標準出力に書き込み、それをメモリにキャプチャできます。

于 2010-01-11T21:16:19.820 に答える