6 votes

Quel est le moyen le plus rapide et le plus simple de télécharger toutes les images d'un site Web ?

Quel est le moyen le plus rapide et le plus simple de télécharger toutes les images d'un site Web ? Plus précisément, http://www.cycustom.com/large/ .

Je pense à quelque chose du genre wget ou curl.

Pour clarifier, tout d'abord (et avant tout) je ne sais pas actuellement comment accomplir cette tâche. Deuxièmement, j'aimerais savoir si wget ou curl a une solution plus facile à comprendre. Merci.

--- MISE À JOUR @sarnold---

Merci d'avoir répondu. Je pensais aussi que cela ferait l'affaire. Cependant, ce n'est pas le cas. Voici la sortie de la commande :

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)

Voici une image des fichiers créés https://img.skitch.com/20120111-nputrm7hy83r7bct33midhdp6d.jpg

Mon objectif est d'avoir un dossier rempli de fichiers d'images. La commande suivante n'a pas permis d'atteindre cet objectif.

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

5voto

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

Le site --no-parent l'empêche d'engloutir tout le site web.


Ahh, je vois qu'ils ont placé un robots.txt demander aux robots de no télécharger des photos à partir de ce répertoire :

$ 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) ne documente aucune méthode permettant d'ignorer robots.txt et je n'ai jamais trouvé un moyen facile de réaliser l'équivalent de --mirror en curl(1) . Si vous vouliez continuer à utiliser wget(1) alors vous devrez insérer un proxy HTTP au milieu qui renvoie les données suivantes 404 para GET /robots.txt demandes.

Je pense qu'il est plus facile de changer d'approche. Comme je voulais acquérir plus d'expérience en utilisant Nokogiri voici ce que j'ai trouvé :

#!/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

Il s'agit juste d'un script rapide et sale -- intégrer l'URL deux fois est un peu laid. Donc si cela est destiné à un usage de production à long terme, nettoyez-le d'abord -- ou trouvez comment utiliser le script rsync(1) à la place.

5voto

Andrea Points 1328

Le site robots.txt peut être ignoré en ajoutant l'option suivante :

-e robots=off

Je recommande également d'ajouter une option permettant de ralentir le téléchargement afin de limiter la charge sur le serveur. Par exemple, cette option permet d'attendre 30 secondes entre un fichier et le suivant :

--wait 30

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X