web-dev-qa-db-fra.com

Utiliser Wget pour crawler récursivement un site et télécharger des images

Comment instructez-vous Wget de crawler récursivement un site Web et de télécharger uniquement certains types d'images?

J'ai essayé d'utiliser cela pour crawler un site et télécharger uniquement les 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 cela contient des centaines de liens vers des sous-pages, qui ont eux-mêmes des liens directs vers des images, Wget rapporte des choses comme "Supprimer la sous-op33.html puisqu'il devrait être rejeté" et ne télécharge jamais d'images, car aucun n'est directement lié à de la page de départ.

Je suppose que cela est parce que mon --Accept est utilisé pour diriger le contenu du filtre et le filtre à télécharger, alors que je souhaite qu'il utilise uniquement pour diriger le téléchargement du contenu. Comment puis-je faire ployer Wget tous les liens, mais seulement télécharger des fichiers avec certaines extensions comme * .jpeg?

Edit: En outre, 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 (E.G. --Accept = JPG, JPEG, HTML, CGI), ils sont toujours toujours rejetés. Y a-t-il un moyen de contourner ceci?

13
Cerin

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

5
meoninterwebz

Comment vous attendez-vous à connaître le contenu de SubPage1333.html (et de sorte que le JPG s'agit de liens vers) s'il n'est pas autorisé à le télécharger. Je vous suggère d'autoriser HTML, obtenez ce que vous voulez, puis supprimez ce que vous ne voulez pas.


Je ne suis pas tout à fait sûr de savoir pourquoi votre CGI est rejetée ... Y a-t-il une sortie d'erreur par wget? Peut-être faire wget verbose (-v) et voir. Pourrait être mieux comme une question distincte.

Cela dit, si vous vous souciez de la bande passante et de télécharger des lots, supprimez ce que vous ne voulez pas après, cela n'a pas d'importance.


Vérifiez également --html-extension

De la page man:

--E

--html-extension

Si un fichier d'application de type/xhtml + xml ou text/html est téléchargé et que l'URL ne se termine pas avec le REGEXP. [HH] [TT] [mm] [ll] [ll] "Cette option va causer le suffixe .html annexé au nom de fichier local. Ceci est utile, par exemple, lorsque vous reflétez un site distant qui utilise .asp pages, mais que vous souhaitez que les pages en miroir soient visibles sur votre serveur Apache Stock Apache. Une autre bonne utilisation pour cela est lorsque vous téléchargez des matériaux généralisés par CGI. Une URL aime http://site.com/article.cgi?25 sera enregistrée comme article.cgi? 25.html.

Notez que les noms de fichiers ont changé de cette manière seront ré-téléchargés chaque fois que vous rétablissez un site, car Wget Canât dit que le fichier X.HTML local correspond à une URL distante x (puisqu'il ne savait pas encore que l'URL produit la production de type. Texte/HTML ou Application/XHTML + XML. Pour empêcher ce téléchargement de nouveau, vous devez utiliser -k and -k afin que la version originale du fichier soit enregistrée comme x.orig.


--restrict-file-names=unix Peut aussi être utile en raison de ces URL CGI ...

1
Pricey

Vous pouvez également utiliser METAPRODUCTS Offline Explorer sans programmation

0
TiansHUo