Page 1 sur 1
[R] Enregistrer sous une page internet
Posté : lun. 26 août 2013 12:57
par Utilisateur 4989 supprimé
Bonjour,
j'ai un site et je souhaiterais "enregistrer sous" une page internet complète (sous Firefox : "page.html" et "page_fichiers" qui contient les images, scripts, css...) automatiquement. J'ai fais ceci :
mais ça ne crée que "page.html" et pas "page_fichiers".
Comment faire pour que ça enregistre de façon "page.html" et "page_fichiers" avec les images, scripts, css..., comme si je faisais "enregistrer sous" dans Firefox ?
Merci d'avance pour votre aide.
Re: [..] Enregistrer sous une page internet
Posté : lun. 26 août 2013 13:34
par yohan8
Un fichier .mht est un fichier d'archive de page web. Il permet d'enregistrer des pages visitées sur ton disque dur.
Code : Tout sélectionner
_INetGetMHT("http://www.google.Fr","google.mht")
Func _INetGetMHT( $url, $file )
Local $msg = ObjCreate("CDO.Message")
If @error Then Return False
Local $ado = ObjCreate("ADODB.Stream")
If @error Then Return False
With $ado
.Type = 2
.Charset = "US-ASCII"
.Open
EndWith
$msg.CreateMHTMLBody($url, 0)
$msg.DataSource.SaveToObject($ado, "_Stream")
FileDelete($file)
$ado.SaveToFile($file, 1)
$msg = ""
$ado = ""
Return True
EndFunc
Re: [..] Enregistrer sous une page internet
Posté : lun. 26 août 2013 20:34
par Utilisateur 4989 supprimé
J'ai modifié la 1ère ligne de ton code pour l'adapter à mon site que je veux enregistrer sous :
Il apparaît dans la fenêtre de résultats :
Code : Tout sélectionner
==> The requested action with this object has failed.:
$msg.CreateMHTMLBody($url, 0)
$msg.CreateMHTMLBody($url, 0)^ ERROR
Mais ce que je souhaiterais obtenir c'est "page.html" et "page_fichiers" avec les images, scripts, css...
Re: [..] Enregistrer sous une page internet
Posté : lun. 26 août 2013 21:43
par yohan8
Tu as oublié le World Wide Web !
► Afficher le texte
Code : Tout sélectionner
_INetGetMHT("http://www.servactif.net46.net","page.mht")
Func _INetGetMHT( $url, $file )
Local $msg = ObjCreate("CDO.Message")
If @error Then Return False
Local $ado = ObjCreate("ADODB.Stream")
If @error Then Return False
With $ado
.Type = 2
.Charset = "US-ASCII"
.Open
EndWith
$msg.CreateMHTMLBody($url, 0)
$msg.DataSource.SaveToObject($ado, "_Stream")
FileDelete($file)
$ado.SaveToFile($file, 1)
$msg = ""
$ado = ""
Return True
EndFunc
J'ai fais le tour de la question et je n'ai rien trouvé d'autre, à part automatiser la sauvegarde manuelles des pages comme tu le souhaites..
Avec IE la fonction _IEAction avec le paramètre "saveas" t'ouvres une boite de dialogue
EDIT : chez moi cette boite de dialogue ne permet pas d'enregistrer la page web complète..
Tu souhaites enregistrer cette page déjà chargé dans un navigateur ?

Re: [..] Enregistrer sous une page internet
Posté : lun. 26 août 2013 21:47
par jguinch
@yohan8 : j'ai aussi pensé à la commande _IEAction($oIE, "SaveAs"), mais c'est un peu pénible à automatiser (il faut 2 scripts), et j'ai l'impression que cette commande est différente de l'action "Enregistrer sous".
Re: [..] Enregistrer sous une page internet
Posté : mar. 27 août 2013 11:09
par Utilisateur 4989 supprimé
yohan8 a écrit :Tu as oublié le World Wide Web !
Le site marche avec ou sans les "www". Avec les "www", le problème y est encore.
yohan8 a écrit :Tu souhaites enregistrer cette page déjà chargé dans un navigateur ?

Pas forcément, mais si c'est nécessaire, ça ne me dérange pas.
Re: [..] Enregistrer sous une page internet
Posté : mar. 27 août 2013 12:02
par yohan8
Ha, chez moi les scripts avec et sans "www" fonctionnent..
Je tourne sur w7x64.
Pour moi il te reste plus qu'à automatiser la sauvegarde manuelle des pages.
► Afficher le texte
Vraiment pas top comme solution, sry
Code : Tout sélectionner
#include <IE.au3>
$oIE = _IECreate("http://servactif.net46.net",0,1)
ControlSend("[CLASS:IEFrame]","","","^s")
WinWait("Enregistrer la page Web","")
ControlSend("Enregistrer la page Web","","[CLASS:ToolbarWindow32; INSTANCE:3]","Bureau")
ControlSend("Enregistrer la page Web","","[CLASS:Edit; INSTANCE:1]","page web complête")
ControlClick("Enregistrer la page Web","","[CLASS:Button; INSTANCE:1]")
_IEQuit($oIE)
Re: [..] Enregistrer sous une page internet
Posté : mar. 27 août 2013 12:59
par Utilisateur 4989 supprimé
yohan8 a écrit :Je tourne sur w7x64.
Moi aussi.
yohan8 a écrit :Pour moi il te reste plus qu'à automatiser la sauvegarde manuelle des pages.
► Afficher le texte
Vraiment pas top comme solution, sry
Code : Tout sélectionner
#include <IE.au3>
$oIE = _IECreate("http://servactif.net46.net",0,1)
ControlSend("[CLASS:IEFrame]","","","^s")
WinWait("Enregistrer la page Web","")
ControlSend("Enregistrer la page Web","","[CLASS:ToolbarWindow32; INSTANCE:3]","Bureau")
ControlSend("Enregistrer la page Web","","[CLASS:Edit; INSTANCE:1]","page web complête")
ControlClick("Enregistrer la page Web","","[CLASS:Button; INSTANCE:1]")
_IEQuit($oIE)
OK, merci.
Merci pour ton aide, sujet résolu.