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?

Réponses:


5

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


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 ...


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


-1

Essayez d'ajouter l' --page-requisitesoption


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.