begin process at 2008 07 05 14:22:29
1 205 183 membres
159 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : enregistrer une page web [ Archives / J'AI BESOIN D'AIDE !!!! :O ] (slhuilli)

enregistrer une page web le 22/09/2004 23:42:29

slhuilli
je cherche a enregistrer une pge web donnée en parametre au format HTML sur mon disque (la meme chose que, sous IE, menu fichier->enregistrer sous avec "page web complete d'activer))

si qq'un sait faire.....

merci

Re : enregistrer une page web le 23/09/2004 14:08:00

arnaud_tournier
Réponse acceptée !
Salut,

voila un petit code qui pourra résoudre ton probleme

fait un uses de idHTPP


procedure TForm1.Button1Click(Sender: TObject);
var idHTTP : TIdHTTP;
MemoryStream : TMemoryStream;
begin
idHTTP := TIdHTTP.Create(nil);
MemoryStream := TMemoryStream.Create;
idHTTP.Get('http://www.delphifr.com',MemoryStream);
MemoryStream.SaveToFile('c:\toto.html');
FreeAndNil(MemoryStream);
FreeAndNil(idHTTP);
end;


apres si tu veux aussi les fischiers liés, il faut que tu parcours ton stream ou ton fichier et que tu le parses pour en extraire les liens et les sauvegarder, puis modifie tous les liens absolues en liens relatifs qui pointes sur le bon rep...

Dis moi si ca te convient, je te donnerais d autres trucs si ca va pas...

Arnaud

Re : enregistrer une page web le 23/09/2004 22:26:32

slhuilli
presque parfait....
Comme tu en parles, j'aurais aimé avoir TOUTES la pages, imags comprises ? Est- ce abusé de te demander comment je peux le faire ?

Merci

NB : tu parles de parser. j'entends ca a toutes les sauces . C'est quoi parser ?

Re : enregistrer une page web le 24/09/2004 12:46:44

arnaud_tournier
En fait, parser un fichier veut tout simplement dire analyser le fichier pour en retirer ce qui t intérresse. Dans ton cas, il faut que tu recherche toutes les pages et les images associées dans ta page et que tu les téléchargent, J ai modifie le petit bout de coe que je t avais donne pour qu il convienne peut etre un peu miseux a ce que tu recherche....


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
function enregistre(sHost, sBaseFichier, sURL: String) : String;
function RechercheEtEnregistre(sHost, sBaseFichier : String; var sTextASauver, sText : String; sDeLaBalise, sALaBalise: String): String;
function Parse(sHost, sBaseFichier, sText : String) : String;
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

uses idHTTP;

{$R *.dfm}

function TForm1.enregistre(sHost, sBaseFichier, sURL: String) : String;
var idHTTP : TIdHTTP;
MemoryStream : TMemoryStream;
sTmp : String;
sDir : String;
begin
idHTTP := TIdHTTP.Create(nil);
if sHost = '' then
begin
try
idHTTP.Get(sURL);
sHost := 'http://' + idHTTP.Host;
Except on exception do
begin
result := '';
exit;
end;
end;
end;
MemoryStream := TMemoryStream.Create;
if pos(sHost, sURL) > 0 then
begin
sTmp := copy(sURL,pos(sHost, sURL) + length(sHost),length(sURL));
end
else
begin
sTmp := sURL;
end;
try
try
idHTTP.Get(sHost + sTmp,MemoryStream);
Except on exception do
begin
Result := enregistre('', sBaseFichier, sURL);
exit;
end;
end;
sTmp := StringReplace(sTmp,'/','\',[rfReplaceAll]);
ForceDirectories(sBaseFichier + idHTTP.Host);
sTmp := StringReplace(sTmp, '|','_',[rfReplaceAll]);
sTmp := StringReplace(sTmp, '*','_',[rfReplaceAll]);
sTmp := StringReplace(sTmp, ':','_',[rfReplaceAll]);
sTmp := StringReplace(sTmp, '?','_',[rfReplaceAll]);
sTmp := sBaseFichier + idHTTP.Host + '\' + sTmp;
sDir := ExtractFileDir(sTmp);
ForceDirectories(sDir);
if ExtractFilename(sTmp) = '' then
begin
sTmp := sTmp + '\index.html';
end;
MemoryStream.SaveToFile(sTmp);
FreeAndNil(MemoryStream);
FreeAndNil(idHTTP);
result := sTmp;
except on e:Exception do
begin
showMessage(e.Message);
result := '';
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
sFilename : String;
slTmp : TStringList;
begin
sFilename := enregistre('http://www.delphi.fr', 'c:\', '');
slTmp := TStringList.Create();
slTmp.LoadFromFile(sFilename);
slTmp.Text := Parse('http://www.google.fr', 'c:\', slTmp.Text);
slTmp.SaveToFile(sFilename);
FreeAndNil(slTmp);
end;

function TForm1.RechercheEtEnregistre(sHost, sBaseFichier : String; var sTextASauver, sText : String; sDeLaBalise, sALaBalise: String): String;
var
sTmp, sOldTmp : String;
sFilename : String;
begin
Result := sTextASauver;
While pos(sDeLaBalise, sText) > 0 do
begin
sTmp := copy(sText, pos(sDeLaBalise, sText) + length(sDeLaBalise), length(sText));
if sTmp <> '' then
begin
sTmp := copy(sTmp,1, pos(sALaBalise, sTmp) - 1);
if sTmp <> '' then
begin
sFileName := enregistre(sHost, sBaseFichier, sTmp);
Result := StringReplace(Result,sDeLaBalise + sTmp + sALaBalise, sDeLaBalise + 'file://' + sFileName + sALaBalise,[]);
sText := StringReplace(sText,sDeLaBalise + sTmp + sALaBalise, '',[]);
end;
end;
end;
end;

function TForm1.Parse(sHost, sBaseFichier, sText: String): String;
begin
result := sText;
result := RechercheEtEnregistre(sHost, sBaseFichier, result, sText, 'src=''', '''');
result := RechercheEtEnregistre(sHost, sBaseFichier, result, sText, 'src="', '"');
result := RechercheEtEnregistre(sHost, sBaseFichier, result, sText, 'src=', '>');
result := RechercheEtEnregistre(sHost, sBaseFichier, result, sText, 'href=''', '''');
result := RechercheEtEnregistre(sHost, sBaseFichier, result, sText, 'href="', '"');
result := RechercheEtEnregistre(sHost, sBaseFichier, result, sText, 'href=', '>');
end;

end.


Arnaud

Re : enregistrer une page web le 24/09/2004 17:39:22

jobtunisieyasser
arnaud_tournier !!!
Cool
Jézeka ALLAh'o khyaran

@_______=-Jobtunisie-=_______@
|..................NOURON ALA NOUR.......................|


Classé sous : enregistrer, web, page

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Redaction texte pour s...
Budget : 180€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS