Mettre en miroir un répertoire d'un site Web

1

Je veux télécharger le classique «À partir de FORTH» livre, qui semble être épuisé, mais disponible ici gratuitement. C’est-à-dire que je veux utiliser un site-ripper pour télécharger toutes les pages html du forth.com/starting-forth/ sous-répertoire (et seulement là) qui sont liés à partir de l'index et aussi tout les images utilisées dans ces pages, quel que soit leur emplacement.

J'ai essayé de le faire avec HTML, mais il semble être tout à fait compliqué , car je devrais ajouter manuellement tous les sous-répertoires de forth.com/starting-forth/.

Comment dois-je procéder? Les solutions Windows ou Linux sont bonnes, bien que je préfère ce dernier.

wolf-revo-cats
la source
As-tu essayé wget? BTW lu tout les options et recherchez des exemples de ligne de commande en ligne. Il semble qu'il n'y ait pas de règles robot.txt sur ce site. `wget -p -k exemple.com/sub-dir 'Cochez l'option de rester sur le site et d'éviter de monter dans ce répertoire de départ.
Hastur
Essayer httrack , conçu pour faire ce que vous voulez. Cela fonctionne à la fois - Linux et Windows
Alex

Réponses:

3

Vous pouvez utiliser wget.

wget -r -np -k https://www.forth.com/starting-forth/
  • -r récursif
  • -np ne pas suivre les liens vers les répertoires parents
  • -k faire des liens dans HTML ou CSS téléchargé pointent vers des fichiers locaux

(De cette réponse )

(Edit) Les dernières commandes:

wget -r -np -k -p --domains forth.com,netdna-ssl.com -H https://www.forth.com/starting-forth/
  • --domains est utilisé pour définir les domaines où le contenu sera téléchargé. Ce sera normalement juste le site Web et un cdn.
  • -H permet de télécharger du contenu à partir d'autres hôtes (ceux que vous avez mis en --domain ).

find . -name "*.html" -type f -exec sed -i 's/\?ver=/_ver=/g' {} +

Ceci recherche tous les fichiers html et remplace les références à ?ver avec _ver parce que quand wget télécharge tous les fichiers dont l’url contient quelque chose comme: jquery.colorbox.js?ver=1.1.0 il doit remplacer le ? avec _ pour l'enregistrer en tant que fichier.

Kevin
la source
@ wolf-revo-cats Je l'ai essayé localement et, autant que je sache, toutes les images ont été enregistrées.
Kevin
pour moi pas et j'ai utilisé exactement votre commande. Bien sûr, ils apparaissent dans le navigateur, car vous êtes en ligne. Mais faites une recherche dans le répertoire miroir local pour les fichiers image, il n'y en a pas.
wolf-revo-cats
ok, j'ai lu la page de manuel wget. Celui-là wget -r -np -k -p --domains forth.com,netdna-ssl.com -H https://www.forth.com/starting-forth/ genre de travaux. Au moins, il télécharge les fichiers image. Il y a encore quelque chose qui ne va pas avec la mise en page du site en miroir :-( :-( mais ça va, au moins utilisable maintenant si vous êtes vraiment déconnecté. Si vous savez comment le réparer complètement, s'il vous plaît faites le moi savoir. Merci jusqu'ici pour votre aide.
wolf-revo-cats
Comme il semble, wget remplace le "?" dans des fichiers comme colorbox.css? ver = 4.7.2 avec un "_". Vous pourriez courir quelque chose comme find . -name "*.html" -type f -exec sed -i 's/\?ver=/_ver=/g' {} +
Kevin