Page 1 sur 1

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

Publié : sam. 01/avr./2006 10:43
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?

Publié : sam. 01/avr./2006 12:19
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.

Publié : sam. 01/avr./2006 12:19
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

Publié : sam. 01/avr./2006 12:52
par Chris
Et par les interfaces, y a pas moyen?

Tous les IHtml.... machin!
Y a pas quelque chose d'exploitable là-dedans?

Publié : sam. 01/avr./2006 13:00
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

Publié : dim. 02/avr./2006 10:42
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.