wget a une telle option -np
qui désactive la récupération de fichiers depuis n'importe quel répertoire parent. J'ai besoin de quelque chose de similaire mais un peu plus flexible. Considérer:
www.foo.com/bar1/bar2/bar3/index.html
Je voudrais tout obtenir, mais pas "plus haut" (dans la hiérarchie arborescente) que bar2
(!). Il bar2
faut donc aussi aller le chercher mais pas bar1
.
Existe-t-il un moyen de rendre wget plus sélectif?
Contexte: J'essaie de refléter un site Web, avec une structure logique similaire - point de départ, puis haut, puis bas. S'il existe un autre outil que wget
, mieux adapté à une telle disposition, faites-le moi savoir également.
Mise à jour
Ou au lieu de spécifier une profondeur possible, peut-être quelque chose comme "pas de parents, sauf s'ils correspondent à telle ou telle URL".
Update 2
Il y a une certaine structure sur le serveur, non? Vous pouvez le visualiser sous forme d'arbre. Donc normalement avec "--no-parent" vous commencez à partir d'un point A et descendez seulement.
Mon souhait, c'est la capacité de monter - exprimée en disant, il est permis de monter X nœuds, ou (ce qui est 100% équivalent) qu'il est autorisé de monter jusqu'au nœud B (où la distance BA = X).
Dans tous les cas, les règles de descente restent telles que définies par les utilisateurs (par exemple - descendre uniquement par niveaux Y).
Comment le conserver? En fait, ce n'est pas vraiment la question - wget
par défaut recrée la structure du serveur, il n'y a rien à craindre ici, ou il n'y a pas besoin de réparer quoi que ce soit. Donc, en 2 mots - comme d'habitude.
Mise à jour 3
Structure du répertoire ci-dessous - supposons que dans chaque répertoire, il n'y ait qu'un seul fichier, dans R-R.html et ainsi de suite. Ceci est bien sûr simplifié car vous pouvez avoir plus d'une page.
R
/ \
B G
/ \
C F
/ \
A D
/
E
A (A.html) est mon point de départ, X = 2 (donc B est le nœud le plus haut que je voudrais récupérer). Dans cet exemple particulier, cela signifie récupérer toutes les pages sauf R.html et G.html. A.html est appelé "point de départ" car je dois partir de lui, pas de B.
Mise à jour 4
La dénomination est utilisée à partir de la mise à jour 3.
OPTIONS wget www.foo.com/B/C/A/A.html
La question est de savoir quelles sont les options pour obtenir toutes les pages du répertoire B et inférieur (sachant que vous devez commencer à partir de A.html).
bar2
aller chercher mais pasbar1
? Oùbar2
va résider? Que se passe-t-il si deux répertoires ou plus que vous ne voulez pas ont des sous-répertoires de même nom, si leur contenu doit être fusionné? Il est presque certainement plus facile d'obtenir tout le putain de site et de tailler / déplacer les choses comme vous le souhaitez.bar2
répertoire et tout son contenu. Si ce n'est pas le cas, veuillez clarifier.Réponses:
Je ne l'ai pas essayé, mais utiliser -I et -X pourrait vous donner ce que vous voulez. Mes premiers essais iraient dans le sens de
Explication des options:
la source
Vous devez ajouter un final / à l'URL, sinon vous n'obtiendrez pas ce que vous voulez.
Si vous souhaitez obtenir tout le contenu sur www.myhostname.com/somedirectory, la syntaxe doit se lire comme suit:
Essayez-le sans la fin / et voyez ce qui se passe. Essayez ensuite avec le /.
la source
Je pense que la bonne réponse ici est l'
--no-parent
option:la source
Peut-être que je manque quelque chose, mais si c'est ce que tu veux alors
fonctionne pour moi (en utilisant votre exemple). Bien sûr, avec ces options, vous obtiendrez toute la structure de répertoires au-dessus de cela, de
www.foo.com
bas en haut. Si vous voulez justebar2
au plus haut niveau, alors faites-nH
se débarrasse dewww.foo.com
, et--cut-dirs=1
se débarrasse debar1
, donc vous obtiendrezbar2
et ses sous-répertoires téléchargés dans le répertoire courant. Pour plus d'informations, voirman wget
, qui est assez lisible et contient des exemples.la source
np
), mais je cherche une solution générale, lorsque le niveau supérieur est au-dessus du point de départ.B
(selon votre exemple), mais plutôtA
? Si oui, pourquoi? Est-ce parce que vous souhaitez automatiser un script ou pour une autre raison? Je ne sais pas non plus ce que vous entendez par X = 2. Est-ce que cela signifie le niveau 2? Si vous essayez de chercher des répertoires plus bas dans l'arbre, je ne sais pas comment vous distinguezB
deG
.