Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > ARTICOLO

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Scaricare elementi di una pagina web dal controllo WebBrowser

Questa lezione, consultata da 11447 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 85 votanti.


Scaricare elementi di una pagina web dal controllo WebBrowser 

Per poter salvare alcuni elementi di una pagina visualizzata all’interno del controllo WebBrowser è necessario utilizzare la funzione URLDownloadToFile dopo aver selezionato il tipo di elemento da scaricare.
Questo significa che nel gruppo di elementi di cui si compone una specifica pagina Internet, si dovrà andare a selezionare quello desiderato, come si vedrà nell’esempio mostrato di seguito.
Innanzitutto è d’obbligo analizzare la funzione URLDownloadToFile, la cui dichiarazione corrisponde alla seguente:

Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _ ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

dove il parametro pCaller nel caso in esame dev’essere posto a 0, il parametro szURL rappresenta l’indirizzo della pagina in questione, szFileName il nome del file da creare sul disco rigido che rappresenterà ogni singolo elemento scaricato (ad esempio nel caso di un’immagine .jpg il nome che andrà ad assumere una volta salvata sull’hard disk), dwReserved parametro riservato dev’essere anch’esso impostato sul valore 0 come l’ultimo parametro ossia lpfnCB.

Pertanto se si aggiunge un controllo WebBrowser al progetto e si aggiunge ai riferimenti del progetto la voce Microsoft HTML Object Library, come mostrato in figura:

si potrà assegnare la pagina di destinazione del controllo WebBrowser all’apertura di Form1.
Per semplicità verrà assegnato un percorso locale. Nulla vieta però di fare riferimento ad una pagina presente in rete per la quale è naturalmente necessaria una connessione attiva:

Private Sub Form_Load()
WebBrowser1.Navigate "localhost/sito/pagina.html"
End Sub

Al completamento del documento e quindi in seguito all’evento DocumentComplete comincerà l’analisi del contenuto della pagina.
Innanzitutto, siccome il download degli elementi del documento è silenzioso ossia non necessita di intervento da parte dell’utente, è fondamentale determinare la cartella nella quale archiviare i file scaricati. Si memorizzerà tale percorso all’interno della variabile denominate FDownload:

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim FDownload As String
FDownload = "C:\FDownload\"

End Sub

Nota: il processo di download dei file non può andare a buon fine se la cartella specificata non esiste. Si rende pertanto necessario un controllo della presenza della directory ed eventualmente la creazione della stessa. Pertanto si può aggiungere il seguente blocco di codice:

If Len(Dir(FDownload)) = 0 Then
domanda = MsgBox("La cartella non esiste. Crearla adesso?", vbYesNo + vbInformation)
If domanda = vbYes Then
MkDir FDownload
Else
MsgBox "Download interrotto", vbCritical
Exit Sub
End If
End If

La collezione di una determinata categoria di elementi, rappresentata dall’oggetto IHTMLElementCollection si può immagazzinare in una variabile oggetto denominata insieme_Immagini:

Dim insieme_Immagini As IHTMLElementCollection

All’interno di questa collezione si individua ciascun singolo elemento (ad esempio un’immagine in particolare) come oggetto IHTMLImgElement:

Dim img As IHTMLImgElement

L’associazione della collezione di controlli alla variabile insieme_Immagini avviene semplicemente attraverso il metodo getElementsByTagName dell’oggetto Document della pagina correntemente visualizzata (variabile oggetto pDisp parametro dell’evento DocumentComplete):

Set insieme_Immagini = pDisp.Document.getElementsByTagName("IMG")

Come si nota è sufficiente indicare il tipo di elemento da associare a insieme_Immagini (in questo caso il tag “IMG”) per ottenere l’associazione.
Quindi, una volta popolata la collezione insieme_Immagini si andrà in essa ad eseguire un loop per tutti gli elementi che contiene:

For i = 0 To insieme_Immagini.length – 1

e ad associare ciascuno di questi elementi, uno alla volta finchè non è stato salvato sul disco, alla variabile oggetto img:

Set img = insieme_Immagini.Item(i)

Occorre adesso determinare due parametri legati all’immagine: rispettivamente il nome ed il tipo di estensione. Per quanto riguarda il primo problema si andrà ad utilizzare la proprietà src dell’oggetto:

NomeFile = Right(img.src, Len(img.src) - InStrRev(img.src, "/"))

l’estensione è invece un’analisi più approfondita sulla stringa appena memorizzata nella variabile NomeFile. Inoltre nel caso in cui l’estensione riveli un file immagine accettabile, questo viene scaricato nella directory indicata dalla variabile stringa FDownload:

Estensione = LCase(Right(Nome_File, Len(Nome_File) - InStrRev(Nome_File, ".")))
If Estensione = "gif" Or Estensione = "jpg" Or Estensione = "jpeg" Then
URLDownloadToFile 0, img.src, FDownload & Nome_File, 0, 0
Else

L’istruzione Else indica un secondo caso: l’immagine potrebbe essere priva di estensione oppure potrebbe essere stata creata dinamicamente. E’ pertanto necessario determinarne il tipo esatto attraverso la proprietà mimeType

If InStr(1, img.mimeType, "GIF", vbTextCompare) Then
URLDownloadToFile 0, img.src, FDownload & "file anomalo" & i & ".gif", 0, 0
ElseIf InStr(1, img.mimeType, "JPG", vbTextCompare) Then
URLDownloadToFile 0, img.src, FDownload & "file anomalo" & i & ".jpg", 0, 0
End If
End If

Come si può notare non è possibile determinare il nome esatto del file. Per questo motivo si assegnerà un nome arbitrario “file anomalo” seguito da un indice numerico progressivo per evitare di sovrascrivere le immagini dello stesso tipo salvate in precedenza.

Segue per finire la chiusura del loop e lo scaricamento degli oggetti creati inizialmente:

Set img = Nothing
Next i
Set insieme_Immagini = Nothing
End Sub