Ignorer les «autres» domaines lors du téléchargement avec wget?

13

Je voudrais explorer les liens sous www.website.com/XYZ et télécharger uniquement les liens qui se trouvent sous www.website.com/ABC.

J'utilise la commande wget suivante pour obtenir les fichiers que je veux:

wget  -I ABC -r -e robots=off --wait 0.25  http://www.website.com/XYZ

Cela fonctionne parfaitement lorsque j'utilise wget 1.13.4. Mais le problème est que je dois utiliser cette commande sur un serveur qui a wget 1.11 et quand j'utilise la même commande, cela finit par télécharger des domaines supplémentaires tels que:

www.website.de 
www.website.it 
...

Comment puis-je éviter ce problème? J'ai essayé d'utiliser

--exclude domains=www.website.de,www.website.it

cependant, il a continué à télécharger ces domaines.

Notez également que je ne peux pas utiliser --no-parentcar les fichiers que je veux sont au niveau supérieur (je veux des fichiers sous website.com/ABC en explorant les liens sous website.com/XYZ).

Des indices?

user2779485
la source
N'utilisez pas de «fausses» URL et n'utilisez pas l'URL d'un site qui n'a rien à voir avec votre problème. Les domaines que vous avez répertoriés ne sont en aucun cas des "sous-domaines", ce sont juste des domaines différents, appartenant probablement à la même entreprise.
guntbert
Quelque chose cloche ici. wgetne doit pas traverser les hôtes par défaut, et vous avez besoin de l' option -H/ --span-hostspour traverser les hôtes lors d'un wget récursif. "www.website.com" est un hôte complètement différent de "www.website.de".
jw013
@guntbert désolé, je pensais que donner la vraie URL serait un problème. bien sûr, le site Web que je veux explorer n'est pas website.com. mais lorsque j'explore example.com, je vois également example.it, example.de dans le répertoire principal (au même niveau que example.com).
user2779485
@ jw013 comme je l'ai dit ci-dessus, lorsque je donne simplement www.example.com/x, il explore également www.example.de, www.example.it. MAIS cela ne se produit qu'avec wget 1.11 et non 1.13 .. C'est pourquoi je suis très confus.
user2779485
Cela ressemble à un bug: wget 1.11 ne devrait pas se comporter différemment, il -Ha toujours été nécessaire de récurser en dehors de l'hôte d'origine. Ça -D www.website.comaide?
Gilles 'SO- arrête d'être méchant'

Réponses:

5

C'est faux:

--exclude domains=www.website.de,www.website.it

La bonne façon est:

--exclude-domains www.website.de,www.website.it

Depuis la page de manuel wget:

--exclude-domains domain-list
      Specify the domains that are not to be followed.
Radu Rădeanu
la source
la liste ne doit-elle pas être séparée par komma?
rubo77
@ rubo77 Vous avez raison, j'ai changé ça.
Daniel Werner
18

Vous pouvez essayer --max-redirect 0ou utiliser --domains example.com à l'opposé de --exclude-domains example.com.

Voir:

  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -np, --no-parent                 don't ascend to the parent directory.
  --max-redirect                   maximum redirections allowed per page.
Kenorb
la source
5
C'est mieux que la réponse acceptée si vous aimez la liste blanche des domaines au lieu de la liste noire
yunzen