Bonjour,
Je souhaiterais faire une appli assez basique, où j'ai besoin de récupérer le code source d'une page web, sans la télécharger dans un navigateur
Est-il possible de faire cela ?
Merci par avance pour votre aide
Version imprimable
Bonjour,
Je souhaiterais faire une appli assez basique, où j'ai besoin de récupérer le code source d'une page web, sans la télécharger dans un navigateur
Est-il possible de faire cela ?
Merci par avance pour votre aide
No problem : un NMHTTP (pê pas dispo dans les versions persos) et un simple Get(URL), ou un TWebBrowser invisible et un Navigate. Voire le IdHTTP (Indy), ou d'autres solutions encore...
Ils ont tous des propriétés Body ou IneerHTML qui contiennent le source.
voila ce que j'utilise
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 Unit Unit6; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, WinInet; Type TForm6 = Class(TForm) Button1: TButton; Memo1: TMemo; Procedure Button1Click(Sender: TObject); Private Function DownAndReturnThis(URL: String): String; { Déclarations privées } Public { Déclarations publiques } End; Var Form6: TForm6; Implementation {$R *.dfm} Procedure TForm6.Button1Click(Sender: TObject); Begin memo1.Lines.Text := DownAndReturnThis( 'http://www.developpez.net/forums/d990378/environnements-developpement/delphi/web-reseau/code-source-page-web/'); End; Function TForm6.DownAndReturnThis(URL: String): String; Const Agent = 'Check for update'; Var hFile, HInet: HINTERNET; Buffer: Array[0..32767] Of Char; BufRead: Cardinal; BufSize: Cardinal; Begin // on met le résultat vide si il y a une erreur Result := ''; HInet := InternetOpen(PChar(Agent), INTERNET_OPEN_TYPE_PRECONFIG, NIL, NIL, 0); If Assigned(HInet) Then Try //on essaye d'ouvrir l'adresse du fichier hFile := InternetOpenUrl(HInet, PChar(URL), NIL, 0, INTERNET_FLAG_RELOAD + INTERNET_FLAG_NO_CACHE_WRITE + INTERNET_FLAG_EXISTING_CONNECT + INTERNET_FLAG_NO_COOKIES, 0); //si on a réussi à l'ouvrir If Assigned(hFile) Then Try //on essaie de récupérer les données du fichier BufSize := SizeOf(Buffer); With TStringStream.Create('') Do Try While InternetReadFile(hFile, @Buffer, BufSize, BufRead) And (BufRead > 0) Do Write(Buffer, BufRead); //le résultat est le fichier téléchargé Result := DataString; Finally Free; //on libère l'élément qui a permet de stocker le téléchargement de fichiers End; Finally InternetCloseHandle(hFile); End; Finally InternetCloseHandle(hinet); End; End; End.
merci beaucoup pour votre aide.
Vraiment top ce forum :ccool:
J'utilise delphi 2005 personnal (j'avais omis cette précision)
Y aurait-il une librairie à se procurer, pour faire marcher ces solutions ?
HINTERNET est un type de variable que mon compilo ne reconnait pas :cry:
Si, il reconnanit, si je mets la directive wininet dans les uses
Donc :ccool:
Salut
Je te conseilles les composants Indy 10.
http://delphipage.free.fr/indyd2005.html
Ils sont simples a utiliser et permettent plein de trucs. Tu peux te servir de IdHTTP pour obtenir le code source de ta page web ...
Bonne chance