web-dev-qa-db-fra.com

Échapper des cordes de requête avec wget -mirror

J'utilise wget --mirror --html-extension --convert-links Pour refléter un site, mais je me retrouve avec beaucoup de noms de fichiers dans le format post.php?id=#.html. Lorsque j'essaie de les afficher dans un navigateur, il échoue, car le navigateur ignore la chaîne de requête lors du chargement du fichier. Y a-t-il un moyen de remplacer le ? caractère dans les noms de fichiers avec autre chose?


La réponse de --restrict-file-names=windows Travaillé correctement. En conjonction avec les drapeaux --convert-links et --adjust-extension/-E (anciennement nommé --html-extension, qui fonctionne également mais est obsolète) il produit un miroir qui se comporte comme prévu.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example
15
Jeremy Banks

Voir le --restrict-file-names option. Bien que cela ne soit pas exactement destiné à cet objectif particulier, --restrict-file-names=windows vous aidera probablement à vous aider à:

--Restrict-noms-noms = modes

Modifier les caractères trouvés dans les URL distantes doivent être échappés pendant la génération de noms de fichiers locaux. [...]

Lorsque "Windows" est donné, wget échappe aux personnages \, |, /,: ,?, ",", <, <,> et les caractères de contrôle dans les gammes 0-31 et 128--159. En plus de cette , Wget en mode Windows utilise + au lieu de: Pour séparer l'hôte et le port dans les noms de fichiers locaux, et utilise @ au lieu de séparer la partie de requête du nom de fichier du reste. Par conséquent, une URL qui serait enregistrée comme www. xemacs.org:4300/search.pl?input=blah en mode Unix serait enregistré comme www.xemacs.org+4300/search.pl@input=blah en mode Windows.

16
peth