Accès au code HTML d’une page sur le Web ?

Sujets variés concernant le développement en PureBasic
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Accès au code HTML d’une page sur le Web ?

Message par Dräc »

En PureBasic, il est facile de lire des données ASCII dans un fichier.
Mais comment s’y prendre pour lire des données ASCII, construites à la volée (donc non enregistrées dans un fichier clairement identifié), et contenues dans une fenetre ?
Typiquement, comment avoir accès au code HTML d’une page sur le Web via PB?
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Il faut utiliser les API : URLDownloadToFile_ ou URLDownloadToCacheFile_ suivant si tu veux le transformer en fichier ou le mettre en cache. Ensuite, tu n'as plus qu'à traiter ce fichier.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

bah techniquement la page est stockée dans un fichier temporaire... apres pour savoir comment la trouver c'est autre chose. sinon on trouve peut etre tout ca dans le topic de freak:
http://www.purebasic.fr/english/viewtopic.php?t=16837

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

Message par Chris »

Et par les interfaces, y a pas moyen?

Tous les IHtml.... machin!
Y a pas quelque chose d'exploitable là-dedans?
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Moi j'utilise ça pour extraire du texte d'une chaine ( HTML )

Code : Tout sélectionner

ProcedureDLL SearchStringInit(String.s)
  Global SearchStringIndex,SearchString.s
  SearchStringIndex=1
  SearchString=String
EndProcedure

ProcedureDLL.s SearchString(StartString.s,EndString.s)
  
  Start=FindString(SearchString,StartString,SearchStringIndex)
  
  If Start
    Start=Start+Len(StartString)
    EndIndex=FindString(SearchString,EndString,Start)
    If EndIndex
      SearchStringIndex=EndIndex+Len(EndString)
      ProcedureReturn Mid(SearchString,Start,EndIndex-Start)
    EndIf
  EndIf
EndProcedure

;/ Test
; SearchStringInit("This *is* a Won²der#@=full *test*")
; Debug SearchString("*","*")
; Debug SearchString("²","#@=")
; Debug SearchString("*","*")
et ceci pour lire une page Web et la mettre dans une chaine :

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) 
  
  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) 
  ProcedureReturn RES 
EndProcedure 

ProcedureDLL.s Url2Text(URL.s)
  ProcedureReturn Url2Text2(URL,1,"")
EndProcedure
Sami
Messages : 51
Inscription : mar. 01/nov./2005 21:13
Localisation : Savigny-Sur-Orge

Message par Sami »

Je connais la solution en vb.
http://www.vbfrance.com/code.aspx?ID=4722
Il existe un autre lien sur le site de supinfo plus détaillé, mais je ne me souviens pas de l'adresse.
Il me semble que les types d'objets utilisés dans ce code sont connut en PureBasic. Si on tape HTML dans l'éditeur, on a une liste de fonctions intérressante.
Ca fonctionne sans probléme en VB avec le contrôle WebBrowser. il faut charger ta page web dans le contrôle. Puis crée l'objet qui va avoir accés aux balises qui la compose. Tout cela est expliqué dans le lien.
Je ne sais pas si c'est la bonne méthode pour le PureBasic, par contre.
Répondre