【问题标题】:How do I use Wget to download all images into a single folder, from a URL?如何使用 Wget 从 URL 将所有图像下载到单个文件夹中?
【发布时间】:2011-06-03 21:09:48
【问题描述】:

我正在使用 wget 从网站下载所有图像,它工作正常,但它存储了网站的原始层次结构以及所有子文件夹,因此图像散布在各处。有没有办法让它将所有图像下载到一个文件夹中?我现在使用的语法是:

wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com

【问题讨论】:

    标签: wget


    【解决方案1】:

    试试这个:

    wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
    

    这里有更多信息:

    -nd 阻止创建目录层次结构(即no directories)。

    -r 启用递归检索。请参阅Recursive Download 了解更多信息。

    -P 设置所有文件和目录保存到的目录前缀。

    -A 设置白名单以仅检索某些文件类型。接受字符串和模式,并且两者都可以在逗号分隔的列表中使用(如上所示)。请参阅Types of Files 了解更多信息。

    【讨论】:

    • 这实际上对我不起作用。我的保存位置是“。”它在那里复制了整个站点层次结构。
    • @ButtleButkus 听起来您需要使用接受-A 选项来解决更多问题,请参阅有关types of files 的Wget 文档。此外,如果您正在下载到当前目录,您可以删除目录前缀 -P 选项。如果您正在下载单一文件类型,例如仅 jpg,请使用 wget -r -A.jpg http://www.domain.com 之类的内容。查看 Wget 文档提供的advanced examples
    • 在上面添加-nd 使其工作。您还可以指定多个 -A 标志,例如 -A "*foo*" -A "*bar*"
    • 不要忘记使用--level=inf--level=9999999999,因为wget 可能会破坏作业,因为默认的最大递归深度级别为5
    • 这是一个有用的答案,但我认为当目录被压缩时它不会处理重复的文件名。有没有办法将文件保存为 -1.jpg 和 -2.jpg 等等?在这里,它们以 .jpg.1 格式下载,然后被删除,因为这不是白名单的一部分。
    【解决方案2】:
    wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
    
    • -nd:无目录(将所有文件保存到当前目录;-P directory更改目标目录)
    • -r -l 2: 递归级别 2
    • -A: 接受扩展
    wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
    
    • -H: span hosts(wget默认不下载不同域或子域的文件)
    • -p:页面必备(包括每页上的图片等资源)
    • -e robots=off:执行命令robotos=off,就好像它是.wgetrc 文件的一部分一样。这会关闭机器人排除,这意味着您将忽略 robots.txt 和机器人元标记(您应该知道这带来的影响,小心)。

    示例:从示例目录列表中获取所有 .jpg 文件:

    $ wget -nd -r -l 1 -A jpg http://example.com/listing/
    

    【讨论】:

      【解决方案3】:

      我为多个网站写了一个解决这个问题的shellscript:https://github.com/eduardschaeli/wget-image-scraper

      (使用 wget 从 url 列表中抓取图像)

      【讨论】:

      • 效果很好。谢谢
      【解决方案4】:

      试试这个:

      wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com
      

      并等到它删除所有额外信息

      【讨论】:

      • 它对我不起作用。wget -nd -r -P /Users/duraiamuthan/Downloads/images/ -A jpeg,jpg,bmp,gif,png http://www.forbes.com/profile/mark-zuckerberg/
      【解决方案5】:

      根据手册页,-P 标志是:

      -P 前缀 --目录前缀=前缀 将目录前缀设置为前缀。目录前缀是 将保存所有其他文件和子目录的目录 to,即检索树的顶部。默认值为 . (这 当前目录)。

      这意味着它只指定目标,但指定保存目录树的位置。 它不会将树扁平化到一个目录中。如前所述,-nd 标志实际上就是这样做的。

      @Jon 将来描述标志的作用将是有益的,以便我们了解某些东西是如何工作的。

      【讨论】:

        【解决方案6】:

        建议的解决方案非常适合下载图像,如果足以让您将所有文件保存在您正在使用的目录中。 但是如果你想把所有的图片都保存在一个指定的目录中,而不是复制整个网站的层次树,试着在 Jon 建议的那一行添加“cut-dirs”。

        wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3
        

        在这种情况下,cut-dirs 将阻止 wget 创建子目录,直到网站层次树中的第 3 级深度,将所有文件保存在您指定的目录中。您可以添加更多 'cut-dirs' 更高如果您正在处理具有深层结构的网站,则为数字。

        【讨论】:

          【解决方案7】:

          wget 实用程序使用 HTTP、HTTPS 和 FTP 等广泛使用的协议从万维网 (WWW) 检索文件。 Wget 实用程序是免费提供的软件包,许可证在 GNU GPL 许可证下。该实用程序可以安装任何类 Unix 操作系统,包括 Windows 和 MAC OS。它是一个非交互式命令行工具。 Wget 的主要特点是它的健壮性。它的设计方式使其可以在缓慢或不稳定的网络连接中工作。如果出现网络问题,Wget 会自动从中断的地方开始下载。还递归下载文件。它会一直尝试直到文件被完全检索到。

          在linux机器上安装wget sudo apt-get install wget

          创建要下载文件的文件夹。 sudo mkdir myimages cd myimages

          右键单击网页,例如,如果您想要图像位置,请右键单击图像并复制图像位置。如果有多个图像,请按照以下说明操作:

          如果一次要从网络下载 20 张图片,范围从 0 到 19。

          wget http://joindiaspora.com/img{0..19}.jpg

          【讨论】:

          • 您的回答解释了 wget 是什么以及如何使用它来下载按顺序编号的图像...两者都与原始问题无关。
          猜你喜欢
          • 2011-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-05
          • 1970-01-01
          • 2015-09-12
          • 2020-03-08
          • 1970-01-01
          相关资源
          最近更新 更多