Utilisation de Wget pour explorer récursivement un site et télécharger des images

13

Comment demandez-vous à wget d'explorer récursivement un site Web et de télécharger uniquement certains types d'images?

J'ai essayé d'utiliser cela pour explorer un site et télécharger uniquement des images Jpeg:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Cependant, même si page1.html contient des centaines de liens vers des sous-pages, qui ont eux-mêmes des liens directs vers des images, wget signale des choses comme "Suppression de subpage13.html car il doit être rejeté", et ne télécharge jamais aucune image, car aucune n'est directement liée à à partir de la page de démarrage.

Je suppose que c'est parce que mon --accept est utilisé à la fois pour diriger l'analyse et filtrer le contenu à télécharger, alors que je veux qu'il ne soit utilisé que pour diriger le téléchargement du contenu. Comment faire pour que wget explore tous les liens, mais ne télécharge que des fichiers avec certaines extensions comme * .jpeg?

EDIT: De plus, certaines pages sont dynamiques et sont générées via un script CGI (par exemple img.cgi? Fo9s0f989wefw90e). Même si j'ajoute cgi à ma liste d'acceptation (par exemple --accept = jpg, jpeg, html, cgi), ceux-ci sont toujours toujours rejetés. Y a-t-il un moyen de contourner ceci?

Cerin
la source

Réponses:

5

Pourquoi n'essaierez-vous pas d'utiliser wget -A jpg,jpeg -r http://example.com?

meoninterwebz
la source
La question indique que certaines des images sont de la forme /url/path.cgi?query, donc votre suggestion ne les récupérera pas.
Charles Stewart
1

Comment vous attendez-vous à ce que wget connaisse le contenu de subpage13.html (et donc les jpg vers lesquels il renvoie) s'il n'est pas autorisé à le télécharger. Je vous suggère d'autoriser le HTML, d'obtenir ce que vous voulez, puis de supprimer ce que vous ne voulez pas.


Je ne sais pas trop pourquoi vos cgi sont rejetés ... y a-t-il une erreur générée par wget? Faites peut-être wget verbose ( -v) et voyez. Pourrait être mieux comme une question distincte.

Cela dit, si vous ne vous souciez pas de la bande passante et téléchargez des lots, supprimez ce que vous ne voulez pas, peu importe.


Consultez également --html-extension

Depuis la page de manuel:

-E

--html-extension

Si un fichier de type application / xhtml + xml ou text / html est téléchargé et que l'URL ne se termine pas par l'expression régulière. [Hh] [Tt] [Mm] [Ll]?, Cette option entraînera le suffixe .html à être ajouté au nom de fichier local. Cela est utile, par exemple, lorsque vous mettez en miroir un site distant qui utilise des pages .asp, mais que vous souhaitez que les pages en miroir soient visibles sur votre serveur Apache d'origine. Une autre bonne utilité pour cela est lorsque vous téléchargez des documents générés par CGI. Une URL telle que http://site.com/article.cgi?25 sera enregistrée en tant qu'article.cgi? 25.html.

Notez que les noms de fichiers modifiés de cette manière seront téléchargés à chaque fois que vous remettez en miroir un site, car Wget ne peut pas dire que le fichier X.html local correspond à l'URL distante X (car il ne sait pas encore que l'URL produit une sortie de type text / html ou application / xhtml + xml. Pour éviter ce nouveau téléchargement, vous devez utiliser -k et -K afin que la version originale du fichier soit enregistrée sous X.orig.


--restrict-file-names=unix pourrait également être utile en raison de ces URL cgi ...

Cher
la source
Je devrais arrêter de lier les options wget .. était sur le point de le souligner, --no-parentmais je m'arrêterai là.
Cher
0

Vous pouvez également utiliser MetaProducts Offline Explorer sans programmation

TiansHUo
la source
-1

Essayez d'ajouter l' --page-requisitesoption


la source
Cela télécharge tous les médias liés. La seule façon d'utiliser wget pour télécharger des images est de télécharger TOUS les contenus sur une page?!
Cerin