代码之家  ›  专栏  ›  技术社区  ›  alex

通过wget获取内存并绕过磁盘写入

  •  4
  • alex  · 技术社区  · 15 年前

    是否可以将一个网站的内容直接下载到内存中而不将其写入磁盘?

    我有一组安装了24G的机器,但我的磁盘配额限制在几百MB。我在考虑改变输出方向 wget 不将内容存储在磁盘上的内存结构。另一种选择是创建我自己的版本 WGET 但可能有一个简单的方法可以用管道

    还有什么是并行运行此下载的最佳方法(集群有20个节点)。在这种情况下,不能使用文件系统。

    4 回复  |  直到 10 年前
        1
  •  13
  •   Sinan Ünür    15 年前

    wget download options :

    _-o文件_

    _--输出文档=文件_

    这些文档将不会写入相应的文件,但所有文档将连接在一起并写入文件。如果文件使用__-_秷,文档将打印到标准输出,禁用链接转换。(使用__./-__稊打印到字面上名为__-_稊的文件。)

    如果要将文件读取到Perl程序中,可以调用 wget 使用倒计时。

    取决于你 真正地 需要做的是,您可以通过使用 LWP::Simple get .

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

    更新: 我曾经 不知道 您可以使用Perl实现自己的文件系统 Fuse Fuse.pm . 也见 Fuse::InMemory .

        2
  •  5
  •   Leonardo Herrera    15 年前

    如果您a)已经在使用Perl,b)想要下载HTML,c)解析它,我总是建议您 LWP HTML::TreeBuilder .

        3
  •  5
  •   Giacomo1968    10 年前

    你是根吗?你可以用一个 tmpfs .

    重新编辑:你没有CPU限制,你不需要使用每台机器。你可以使用 xargs -n SOME_NUMBER 要拆分根URL列表,假设有多个。

    但是,如果您热衷于共享内存,则可以设置集群memcache,并将其安装到每台具有 memcachefs .

        4
  •  2
  •   Giacomo1968    10 年前
    wget <url> -O -
    

    将URL的内容写入标准输出,然后可以在内存中捕获。

    推荐文章