从网站下载所有图片的最快最简单的方法是什么?更具体地说,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/
答案 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
的方法,而且我从来没有找到一种简单的方法来执行--mirror
中curl(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)
。