web-dev-qa-db-fra.com

Comment économiser des pages HTML comme un fichier?

Je veux pouvoir enregistrer/archiver les pages HTML comme un fichier (sans ces dossiers externes pesky).

Je veux que le fichier résultant contienne tous les styles, images et liens (vidéos et flash serait aussi agréable, mais pas aussi crucial).

Je veux que le fichier résultant soit consultable et éditable.

Le MHT de Microsoft est l'un de ces outils, mais malheureusement, il n'est pas consultable sous Linux. MHT est bon, mais je ne veux pas être enfermé sous un système d'exploitation ou une entreprise. Quelle serait une bonne alternative - ou peut-être qu'il y a une solution entièrement différente que je ne pensais pas?

Merci d'avance pour vos suggestions!

19
Dimitri Vorontzov

Affichage et création de fichiers MHTML dans les versions actuelles de Google Chrome est pris en charge en basculant sur l'option "Enregistrer la page comme MHTML" sur la page Chrome: // Flags.

tapez chrome: // drapeaux dans votre boîte d'URL

Cependant, l'activation de cette option expérimentale désactive des pages d'enregistrement en tant que fichiers complets HTML-uniquement ou HTML. De la page Chrome: // Flags:

12
banb

Le mêmefile extension chromée est une bonne solution.

J'ai également écrit mon propre python outil pour résoudre ce problème que je recommanderais d'essayer d'essayer: https://github.com/ztrix/webpage2htm

11
zTrix

Extension de la réponse de Ztrix, je suggérerais d'éviter le Chrome Extension (qui n'a pas fonctionné pour moi du tout) et va au lieu de cela avec l'une de ces options:

  • Nœud.js: Inflener de Remy
    • Facile à installer à l'aide de npm
    • De nombreuses options, y compris des drapeaux pour désactiver la minécution/compression, le maintien d'images externes, sauter des vidéos et plus encore.
    • CAVEAT: (22 septembre 2017) ne gagne pas la fonctionnalité de style et de javascript lors de la compilation Builées d'ardoise . Cela n'affectera pas directement la plupart des gens, mais cela signifie que Inlliner aura probablement des problèmes avec d'autres pages. Voir ce numéro
    • CAVEAT: Aucune option pour "laisser les choses seules": sera minifiée/laflamation CSS/JS ou EMBLOYY, mais ne fera pas simplement incorporer la source originale dans HTML.
  • Python 2: WebPage2HTML de Ztrix
    • Plus conservateur que d'insertion; Fonctionne bien pour la plupart des cas.
    • ztrix Correction d'un bug (que Infliner semble également avoir) qui assure une fonctionnalité JavaScript/CSS lors de la compilation Builées d'ardoise . Voir Ce numéro . (mis à jour le 29 septembre 2017)
    • Peut être converti en Python relativement sans douleur
    • Cavalier: ne peut pas gérer CSS @import
3
afeique

Vous pouvez utiliser cet outil: https://github.com/y2z/monolith , il semble faire exactement ce dont vous avez besoin.

Il y a aussi une extension de navigateur pour Chrome faite directement de ce programme, peut être trouvée ici: https://chrome.google.com/webstore/detail/monolith/koalogomkahjlabefiglodpnhhkokekg

1
Sunshine

Habituellement, il est possible de créer un fichier HTML contenant tous ses fichiers enfants communs (CSS, JPG, JS, SVG, ...)
[.____] Vous devez réécrire le fichier HTML en remplaçant "src" Valeur des attributs "" url() "Fonctions et insérez la balise HTML comme" <script></script> " Fichiers, "<style></style>" Pour les fichiers CSS et "<svg></svg>" Pour l'image SVG.

Par exemple, un fichier d'image GIF dans CSS appelé par la fonction "url()".

  1. téléchargez l'image de son URL.
  2. encoder cette image en base64.
  3. remplacer "url('https://en.wikipedia.org/wiki/File:TPB_Magnet_Icon.gif')" par "url('data:image/gif;base64,R0lGODlhDAAMALMPAOXl5ewvErW1tebm5oocDkVFRePj47a2ts0WAOTk5MwVAIkcDesuEs0VAEZGRv///yH5BAEAAA8ALAAAAAAMAAwAAARB8MnnqpuzroZYzQvSNMroUeFIjornbK1mVkRzUgQSyPfbFi/dBRdzCAyJoTFhcBQOiYHyAABUDsiCxAFNWj6UbwQAOw')" avec l'image gif codée de base64, préfixée par "data:image/gif;base64,"

Vous pouvez faire la même chose pour la valeur de l'attribut "src". Cette solution peut être utilisée pour d'autres fichiers binaires. Vous devez adapter le préfixe "data" pour correspondant à l'objet encodé.

0
Cyril CCT