Differenze tra le versioni di "Acquisire il codice HTML di una pagina web"

Da Gambas-it.org - Wikipedia.
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
L'acquisizione del codice HTML di una pagina web può essere effettuata mediante le modalità appresso descritte.
 
L'acquisizione del codice HTML di una pagina web può essere effettuata mediante le modalità appresso descritte.
 
  
 
=Uso delle sole risorse di Gambas=
 
=Uso delle sole risorse di Gambas=
Riga 8: Riga 7:
 
Per poter utilizzare l'oggetto ''WebView'', bisognerà attivare anche il Componente <FONT color=#B22222>''gb.qui.qt.webkit''</font> o il Componente <FONT color=#B22222>''gb.qt5.webkit''</font>.
 
Per poter utilizzare l'oggetto ''WebView'', bisognerà attivare anche il Componente <FONT color=#B22222>''gb.qui.qt.webkit''</font> o il Componente <FONT color=#B22222>''gb.qt5.webkit''</font>.
 
<BR>Verrà innanzitutto caricata la pagina web con la Proprietà ".Url" dell'Oggetto ''WebView''. Successvamente si acquisirà il codice html di detta pagina mediante la Proprietà ".HTML":
 
<BR>Verrà innanzitutto caricata la pagina web con la Proprietà ".Url" dell'Oggetto ''WebView''. Successvamente si acquisirà il codice html di detta pagina mediante la Proprietà ".HTML":
  '''Public''' Sub Form_Open()   
+
  Public Sub Form_Open()   
 
   
 
   
   WebView1.<FONT color=#B22222>Url</font> = "<FONT color=gray>''http&#58;//www.pagina_web_da_caricare''</font>"   
+
   WebView1.<FONT color=#B22222>Url</font> = "<FONT color=darkgreen>''https&#58;//www.pagina_web_da_caricare''</font>"   
 
   
 
   
  '''End''' 
+
  End
 
   
 
   
  '''Public''' Sub WebView1_Load()   <FONT color=gray>' ''Quando la pagina web è stata completamente caricata dalla "WebView", viene sollevato questo evento:''</font>
+
   
 +
Public Sub WebView1_Finish() <FONT color=gray>' ''Quando la pagina web è stata completamente caricata dalla "WebView", viene sollevato questo evento:''</font>
 
    
 
    
 
   Dim s As String   
 
   Dim s As String   
 
    
 
    
  <FONT color=gray>' ''Carichiamo nella variabile di tipo stringa il codice HTML della pagina web:''</font>
+
  <FONT color=gray>' ''Carica nella variabile di tipo stringa il codice HTML della pagina web:''</font>
   s = WebView1.<FONT color=#B22222>HTML</font>
+
   s = WebView1<FONT color=#B22222>.GetHtml()</font>
   
+
   Print s
+
<FONT color=gray>' ''Salva il codice html, ottenuto, in apposito file:''</font>
 +
   File.Save("/tmp/codice_html.html", s)
 
    
 
    
  '''End'''
+
  End
  
 
==Uso dei Componenti ''gb.net'' e ''gb.net.curl''==
 
==Uso dei Componenti ''gb.net'' e ''gb.net.curl''==
Riga 31: Riga 32:
 
    
 
    
 
   
 
   
  '''Public''' Sub Button1_Click()   
+
  Public Sub Button1_Click()   
 
                  
 
                  
 
   With mioHttp
 
   With mioHttp
     .URL = "<FONT color=gray>''http&#58;//www.pagina_web_da_caricare''</font>"           
+
     .URL = "<FONT color=darkgreen>''https&#58;//www.pagina_web_da_caricare''</font>"           
 
     .Timeout = 15   
 
     .Timeout = 15   
 
     .Get()
 
     .Get()
 
   End With
 
   End With
 
   
 
   
  '''End'''  
+
  End
 +
   
 
   
 
   
  '''Public''' Sub mioHttp_Read()   
+
  Public Sub mioHttp_Read()   
 
    
 
    
 
   Dim sBuf As String   
 
   Dim sBuf As String   
Riga 52: Riga 54:
 
   Endif
 
   Endif
 
    
 
    
  '''End''' 
+
  End
 
    
 
    
 
   
 
   
  '''Public''' Sub mioHttp_Finished()
+
  Public Sub mioHttp_Finished()
 
    
 
    
 
   Dim p, s As String   
 
   Dim p, s As String   
Riga 64: Riga 66:
 
   Wait         
 
   Wait         
 
          
 
          
  <FONT color=gray>' ''la variabile stringa contiene la pagina html e viene visualizzata in una textarea:''</font>
+
  <FONT color=gray>' ''La variabile stringa contiene la pagina html e viene visualizzata in una "TextArea":''</font>
 
   TextArea1.Text=stringa
 
   TextArea1.Text=stringa
 
          
 
          
 
   mioHttp.Close
 
   mioHttp.Close
 
    
 
    
  '''End'''
+
  End
  
  
Riga 75: Riga 77:
 
'''Libcurl''' è una libreria gratuita lato-client di trasferimento dati con la sintassi URL, capace di supportare diversi protocolli.
 
'''Libcurl''' è una libreria gratuita lato-client di trasferimento dati con la sintassi URL, capace di supportare diversi protocolli.
  
Per poter fruire in Gambas delle risorse della libreria ''Libcurl'', è necessario avere installata nel sistema e richiamare la libreria condivisa: "''libcurl.so.4.7.0'' ".
+
Per poter fruire in Gambas delle risorse della libreria ''Libcurl'', è necessario avere installata nel sistema e richiamare la libreria condivisa: "''libcurl.so.4.8.0'' ".
  
  
 
Mostriamo un esempio pratico:
 
Mostriamo un esempio pratico:
  Library "libcurl:4.7.0"
+
  Library "<FONT Color=blue>libcurl:4.8.0</font>"
 
   
 
   
 
  Private Const CURLOPT_WRITEDATA As Integer = 10001
 
  Private Const CURLOPT_WRITEDATA As Integer = 10001
Riga 105: Riga 107:
 
   
 
   
 
   
 
   
  Library "libc:6"
+
  Library "<FONT color=#B22222>libc:6</font>"
 
   
 
   
 
  <FONT Color=gray>' ''FILE *fopen (const char *__restrict __filename, const char *__restrict __modes)''
 
  <FONT Color=gray>' ''FILE *fopen (const char *__restrict __filename, const char *__restrict __modes)''
Riga 116: Riga 118:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim cu, url, pagina As Pointer
 
   Dim cu, url, pagina As Pointer
Riga 123: Riga 125:
 
    
 
    
 
  <FONT Color=gray>' ''Imposta l'indirizzo della pagina web di cui scaricare i dati html:''</font>
 
  <FONT Color=gray>' ''Imposta l'indirizzo della pagina web di cui scaricare i dati html:''</font>
   url = Alloc("<FONT Color=gray>''http:&#047;/indirizzo/della/pagina/web''</font>")
+
   url = Alloc("<FONT Color=darkgreen>''https:&#047;/indirizzo/della/pagina/web''</font>")
 
    
 
    
 
  <FONT Color=gray>' ''Imposta il percorso del nuovo file generato con i dati html scaricati della pagina web:''</font>
 
  <FONT Color=gray>' ''Imposta il percorso del nuovo file generato con i dati html scaricati della pagina web:''</font>
   file_finale = "<FONT Color=gray>''/percorso/del/nuovo/file.html''</font>"
+
   file_finale = "<FONT Color=darkgreen>''/percorso/del/nuovo/file.html''</font>"
 
      
 
      
 
  <FONT Color=gray>' ''Inizilizza la libreria ''Libcurl':''</font>
 
  <FONT Color=gray>' ''Inizilizza la libreria ''Libcurl':''</font>
Riga 150: Riga 152:
 
   curl_easy_cleanup(cu)
 
   curl_easy_cleanup(cu)
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 18:57, 20 gen 2024

L'acquisizione del codice HTML di una pagina web può essere effettuata mediante le modalità appresso descritte.

Uso delle sole risorse di Gambas

Vi sono due modalità che prevedono l'uso delle sole risorse di Gambas.

Uso dell'oggetto WebView

Per poter utilizzare l'oggetto WebView, bisognerà attivare anche il Componente gb.qui.qt.webkit o il Componente gb.qt5.webkit.
Verrà innanzitutto caricata la pagina web con la Proprietà ".Url" dell'Oggetto WebView. Successvamente si acquisirà il codice html di detta pagina mediante la Proprietà ".HTML":

Public Sub Form_Open()  

 WebView1.Url = "https://www.pagina_web_da_caricare"  

End


Public Sub WebView1_Finish()  ' Quando la pagina web è stata completamente caricata dalla "WebView", viene sollevato questo evento:
 
 Dim s As String  
  
' Carica nella variabile di tipo stringa il codice HTML della pagina web:
 s = WebView1.GetHtml()

' Salva il codice html, ottenuto, in apposito file:
 File.Save("/tmp/codice_html.html", s)
 
End

Uso dei Componenti gb.net e gb.net.curl

Si potrà innanzitutto acquisire l'intero codice HTML di una pagina web, utilizzando i Componenti gb.net e gb.net.curl nel modo che segue: [Nota 1]

Private mioHttp As NEW HttpClient As "mioHttp"
Private stringa As String  
 

Public Sub Button1_Click()  
                
  With mioHttp
    .URL = "https://www.pagina_web_da_caricare"           
    .Timeout = 15  
    .Get()
  End With

End


Public Sub mioHttp_Read()  
  
 Dim sBuf As String  
   
 Wait
 
 IF Lof(mioHttp) THEN   
   Read #mioHttp, sBuf, Lof(mioHttp)  
   stringa = stringa & sBuf  
 Endif
 
End
 

Public Sub mioHttp_Finished()
 
 Dim p, s As String  
 Dim i As Integer  
        
 Label1.Text = ("Pagina scaricata !")  
   
 Wait        
       
' La variabile stringa contiene la pagina html e viene visualizzata in una "TextArea":
 TextArea1.Text=stringa
       
 mioHttp.Close
 
End


Uso delle funzioni esterne della libreria Libcurl

Libcurl è una libreria gratuita lato-client di trasferimento dati con la sintassi URL, capace di supportare diversi protocolli.

Per poter fruire in Gambas delle risorse della libreria Libcurl, è necessario avere installata nel sistema e richiamare la libreria condivisa: "libcurl.so.4.8.0 ".


Mostriamo un esempio pratico:

Library "libcurl:4.8.0"

Private Const CURLOPT_WRITEDATA As Integer = 10001
Private Const CURLOPT_URL As Integer = 10002
   
' CURL *curl_easy_init(void)
' Start a libcurl easy session.
Private Extern curl_easy_init() As Pointer

' CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...)
' Set options for a curl easy handle
Private Extern curl_easy_setopt(curl As Pointer, optionI As Integer, optionP As Pointer) As Integer
 
' CURLcode curl_easy_perform(CURL *curl)
' Perform a blocking file transfer.
Private Extern curl_easy_perform(curl As Pointer) As Pointer

' const char *curl_easy_strerror(CURLcode)
' Turn a CURLcode value into the equivalent human readable error string.
Private Extern curl_easy_strerror(CURLcode As Integer) As String

' void curl_easy_cleanup(CURL *curl)
' End a libcurl easy handle.
Private Extern curl_easy_cleanup(curl As Pointer)


Library "libc:6"

' FILE *fopen (const char *__restrict __filename, const char *__restrict __modes)
' Open a file and create a new stream for it.
Private Extern fopen(__filename As String, __modes As String) As Pointer

' int fclose (FILE *__stream)
' Close STREAM.
Private Extern fclose(__stream As Pointer) As Integer


Public Sub Main()

 Dim cu, url, pagina As Pointer
 Dim file_finale As String
 Dim ris As Integer
 
' Imposta l'indirizzo della pagina web di cui scaricare i dati html:
 url = Alloc("https://indirizzo/della/pagina/web")
  
' Imposta il percorso del nuovo file generato con i dati html scaricati della pagina web:
 file_finale = "/percorso/del/nuovo/file.html"
    
' Inizilizza la libreria Libcurl':
 cu = curl_easy_init()
 If cu = 0 Then Error.Raise("Impossibile inizializzare la libreria 'curl' !")
  
 curl_easy_setopt(cu, CURLOPT_URL, url)
   
' Apre in scrittura il percorso del nuovo file da salvare:
 pagina = fopen(file_finale, "wb")
   
' Scrive i dati html scaricati della pagina web nella variabile handle per la gestione del nuovo file da salvare:
 curl_easy_setopt(cu, CURLOPT_WRITEDATA, pagina)
  
' Scrive il nuovo file:
 ris = curl_easy_perform(cu)
 If ris <> 0 Then Error.Raise("Errore nella scrittura del file: " & curl_easy_strerror(ris))
   
   
' Va in chiusura e libera tutta la memoria precedentemente allocata:
 fclose(pagina)
 Free(url)
 curl_easy_cleanup(cu)
  
End


Riferimenti


Note

[1] Il codice è stato proposto dall'utente fsurfing del forum del sito www.gambas-it.org.