什么是从网站下载所有图像的最快速,最简单的方法

时间:2012-01-11 00:28:25

标签: curl wget

从网站下载所有图片的最快最简单的方法是什么?更具体地说,http://www.cycustom.com/large/

我正在思考wget或curl的内容。

首先澄清一下(最重要的)我目前还不知道如何完成这项任务。其次,我很想知道wget或curl是否有一个更容易理解的解决方案。感谢。

---更新@sarnold ---

感谢您的回复。我认为这也可以解决问题。但事实并非如此。这是命令的输出:

wget --mirror --no-parent http://www.cycustom.com/large/
--2012-01-10 18:19:36--  http://www.cycustom.com/large/
Resolving www.cycustom.com... 64.244.61.237
Connecting to www.cycustom.com|64.244.61.237|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `www.cycustom.com/large/index.html'

    [  <=>                                                                                                                                                                                                                                  ] 188,795      504K/s   in 0.4s    

Last-modified header missing -- time-stamps turned off.
2012-01-10 18:19:37 (504 KB/s) - `www.cycustom.com/large/index.html' saved [188795]

Loading robots.txt; please ignore errors.
--2012-01-10 18:19:37--  http://www.cycustom.com/robots.txt
Connecting to www.cycustom.com|64.244.61.237|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 174 [text/plain]
Saving to: `www.cycustom.com/robots.txt'

100%[======================================================================================================================================================================================================================================>] 174         --.-K/s   in 0s      

2012-01-10 18:19:37 (36.6 MB/s) - `www.cycustom.com/robots.txt' saved [174/174]

FINISHED --2012-01-10 18:19:37--
Downloaded: 2 files, 185K in 0.4s (505 KB/s)

以下是创建的文件https://img.skitch.com/20120111-nputrm7hy83r7bct33midhdp6d.jpg

的图片

我的目标是拥有一个充满图像文件的文件夹。以下命令未达到此目的。

wget --mirror --no-parent http://www.cycustom.com/large/

2 个答案:

答案 0 :(得分:4)

添加以下选项可以忽略robots.txt文件:

-e robots=off

我还建议添加一个选项以减慢下载速度,以限制服务器上的负载。例如,此选项在一个文件和下一个文件之间等待30秒:

--wait 30

答案 1 :(得分:3)

wget --mirror --no-parent http://www.example.com/large/

--no-parent可以防止它淹没整个网站。


啊,我看到他们已经robots.txt要求机器人从该目录下载照片:

$ curl http://www.cycustom.com/robots.txt
User-agent: *
Disallow: /admin/
Disallow: /css/
Disallow: /flash/
Disallow: /large/
Disallow: /pdfs/
Disallow: /scripts/
Disallow: /small/
Disallow: /stats/
Disallow: /temp/
$ 

wget(1)没有记录任何忽略robots.txt的方法,而且我从来没有找到一种简单的方法来执行--mirrorcurl(1)的等价物。如果您想继续使用wget(1),那么您需要在中间插入一个HTTP代理,为404个请求返回GET /robots.txt

我认为改变方法更容易。由于我希望使用Nokogiri获得更多经验,因此我想出了以下内容:

#!/usr/bin/ruby
require 'open-uri'
require 'nokogiri'

doc = Nokogiri::HTML(open("http://www.cycustom.com/large/"))

doc.css('tr > td > a').each do |link|
  name = link['href']
  next unless name.match(/jpg/)
  File.open(name, "wb") do |out|
    out.write(open("http://www.cycustom.com/large/" + name))
  end
end

这只是一个快速而又脏的脚本 - 将URL嵌入两次有点难看。因此,如果这是用于长期生产用途,请先清理它 - 或者弄清楚如何使用rsync(1)