Faire en sorte que wget convertisse les liens HTML en relatifs après le téléchargement si -k n'était pas spécifié

32

L' -koption (ou --convert-link) convertira les liens de vos pages Web en liens relatifs une fois le téléchargement terminé, comme l'indique la page de manuel:

Une fois le téléchargement terminé, convertissez les liens dans le document pour les rendre adaptés à une visualisation locale. Cela affecte non seulement les hyperliens visibles, mais toute partie du document qui établit un lien vers du contenu externe, comme des images incorporées, des liens vers des feuilles de style, des hyperliens vers du contenu non HTML, etc.

Donc, si je n'ai pas précisé -k, puis-je exécuter à wgetnouveau après le téléchargement et corriger cela, et si oui, quelle serait la commande appropriée? Ma conjecture est wget -c [previous options used] [url]et l'exécuter dans le même répertoire de travail que le fichier a été téléchargé.

Nathaniel
la source
1
vous pouvez certainement post-traiter les fichiers après le téléchargement, mais je ne sais pas si wgetcela se produit. votre idée de l'essayer -cest bonne. il est temps d'expérimenter!
Quack Quichote
Avoir un utilitaire à portée de main pour convertir les liens, par hasard? En passant sous Windows, au fait ...
Nathaniel
perl... pas de script pré-écrit, mais si je voulais une solution de bricolage, c'est ce que j'utiliserais
Quack Quichotte
D'accord merci. Ne pas avoir Perl installé et cela prendrait trop de temps pour le saisir. Heureusement, j'ai trouvé comment faire wget faire le travail. J'ai posté une réponse.
Nathaniel
btw, ActivePerl est autour comme un port perl Windows; c'est un programme d'installation assez petit, et je suis presque sûr que la plupart des modules CPAN fonctionnent avec. activestate.com/activeperl
quack quixote

Réponses:

23

Oui, vous pouvez le faire wget. Je dirais utilisation wget -nc -k [previous options] [previous url]. -ncest pas clobber. Depuis la page de manuel:

Quand −ncest spécifié, ce comportement est supprimé et Wget refusera de télécharger des copies de fichier plus récentes.

Et l' -koption fait la conversion de lien. Ainsi, wget commence à creuser dans le serveur distant, voit tous les fichiers que vous avez déjà, refuse de les retélécharger, puis modifie les liens HTML en fonction quand c'est fait. Agréable.

Nathaniel
la source
3
Non ça ne marche pas pour moi. Il télécharge le premier fichier (par exemple index.html), voir qu'il est déjà téléchargé un arrêt. Si vous voulez que wget fonctionne récursivement, vous devez utiliser l'option d'horodatage (-K). Donc, wget doit demander à tous les en-têtes de correspondre si le fichier est plus récent ou non.
12
GNU Wget 1.13.3 construit sur darwin11.1.0. Essayer d'utiliser les deux options en même temps donneBoth --no-clobber and --convert-links were specified,only --convert-links will be used.
Ludovic Kuty
2
votre question n'a pas demandé sans -k?
barlop
8
Cf. Commentaire de LudovicKuty - à partir de wget 1.13 --no-clobberne fonctionne pas avec --convert-links. Voir http://savannah.gnu.org/bugs/?31781 pour plus de détails.
David Moles
1
Au cas où quelqu'un s'en soucierait
berezovskyi