Recuperer le contenu d'une page web

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Recuperer le contenu d'une page web

Message par Parole De JOJO »

Coucou, me revoila, une petite visite le temps de creer un petit programme que j'ai promis a un copain
Premierement j'en profite pour presenter des excuses a Dobro envers qui je me suis adresse malpoliment la derniere fois que je suis rentre ici.

Deuxiemement .. voila : J'ai fait une recherche, mais je n'ais trouve que des API, ce qui n'est pas vraiment pratique pour le petit project que j'entreprends : Existe-t-il une fonction Purebasic pour recuperer le contenu d'une page web, afin de la stocker dans une variable, puis la traiter? Il s'agit d'un petit code HTML, rien de tres complique ni de tres lourd.
Je ne sais pas pourquoi mais j'ai le souvenir d'avoir un jour fait ca pour recuperer un numero de version d'un programme mais je ne retrouve plus la source

Si c'est impossible, quel est le moyen le plus simple de le faire via les apis?

Merci beaucoup et bonne soiree
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Recuperer le contenu d'une page web

Message par Chris »

Il y a la bibliothèque "Http" qui fonctionne bien pour ça.

Code : Tout sélectionner

InitNetwork()
Dir$ = GetCurrentDirectory()
Page$ = Dir$ + "index.php"


;/ Connexion au site, et téléchargement de la page d'index
Result = ReceiveHTTPFile("http://www.purebasic.fr/french/", Page$)

;/ Lecture du fichier et mise en mémoire
If Result <> 0
  If ReadFile(0, Page$)
    L = Lof(0) : *Mem = AllocateMemory(L)
    If *Mem
      ReadData(0, *Mem, L)
      Fichier$ = PeekS(*Mem, MemoryStringLength(*Mem), #PB_UTF8)
    EndIf
    FreeMemory(*Mem) : CloseFile(0)
  EndIf
EndIf

Debug Fichier$
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: Recuperer le contenu d'une page web

Message par Cls »

Avec le WebGadget, tu as GetGadgetItemText() avec l'attribut #PB_Web_HtmlCode.
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: Recuperer le contenu d'une page web

Message par Parole De JOJO »

@chris, c'est ce que je fais en attendant, mais c'a m'oblige a telecharger le fichier alors que je voudrais le lire en ligne

@cls, c'est une bonne idee, mais il faut un webgadget, disons invisible, mais c'est un petit peu tordu comme systeme et peut etre meme plus lent que de recuperer la page.

en fait il ne s'agit que d'une seule ligne, je suis certain d'avoir vu une fois une procedure pour cela


Merci
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Recuperer le contenu d'une page web

Message par Chris »

@chris, c'est ce que je fais en attendant, mais c'a m'oblige a telecharger le fichier alors que je voudrais le lire en ligne
Tu parles d'une affaire: Télécharger un fichier de quelques dizaine d'octets.
D'autant plus que si tu ne changes pas son nom dans la variable "Page$", il est systématiquement écrasé par le téléchargement suivant.

Rien ne t'empêche, une fois qu'il est en mémoire dans le buffer, de le supprimer. Ça ne fait qu'une ligne de code en plus. :wink:
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: Recuperer le contenu d'une page web

Message par Parole De JOJO »

OK merci, je voulais juste savoir si il n'y a pas plus simple
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Recuperer le contenu d'une page web

Message par graph100 »

malheureusement, ce que j'ai ne se fait que par API, j'ai emprunté le code à qqun, je ne sais plus qui ;'(

Code : Tout sélectionner

ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
	; 1 INTERNET_OPEN_TYPE_DIRECT Resolves all host names locally.
	; 0 INTERNET_OPEN_TYPE_PRECONFIG Retrieves the proxy Or direct configuration from the registry.
	; 4 INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY Retrieves the proxy Or direct configuration from the registry And prevents the use of a startup Microsoft JScript Or Internet Setup (INS) file.
	; 3 INTERNET_OPEN_TYPE_PROXY Passes requests To the proxy unless a proxy bypass list is supplied And the name To be resolved bypasses the proxy. In this Case, the function uses INTERNET_OPEN_TYPE_DIRECT.
	
	
	
	isLoop.b=1
	INET_RELOAD.l = $80000000
	hInet.l=0
	hURL.l=0
	Bytes.l=0
	Buffer.s= Space (2048 )
	RES.s= ""
	
	
	hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
	hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
	
	If hURL
		
		Repeat
			InternetReadFile_ (hURL,@Buffer, Len (Buffer), @Bytes)
			
			If Bytes = 0
				isLoop=0
			Else
				RES = RES + Left (Buffer, Bytes)
			EndIf
		Until isLoop=0
		
		InternetCloseHandle_ (hURL)
		InternetCloseHandle_ (hInet)
		
	Else
		ProcedureReturn "CONNECTION ERROR"
	EndIf
	
	ProcedureReturn RES
EndProcedure
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre