Scaricare una pagina web con Visual Basic .net (VB.NET)

scaricare una pagina web con vb.netSe vi siete mai chiesti come fare a scaricare una pagina web con VB.Net e cercate un modo semplice e una guida pratica per farlo, siete arrivati nel posto giusto.

Il modo più semplice per scaricare una pagina web ed in generale qualsiasi file dal web (pdf, immagini, programmi eseguibili ecc.) è quello di utilizzare una Classe già presente in VB.Net chiamata WebClient. La classe WebClient ha diversi Metodi ma quelli che ci interessano maggiormente sono tre:

  • DownloadString(link) – scarica tutti i caratteri presenti nella destinazione (link) e li memorizza in una stringa. Questo metodo è adatto solamente a scaricare contenuto di tipo testuale (pagine html, asp, php, txt ecc.)
  • DownloadFile(link, percorso) – scarica il contenuto del link che può essere di qualsiasi tipo (pdf, immagini, programmi ecc.) e lo memorizza in un file indicato in percorso
  • DownloadData(link) – come il metodo precedente, ma il salvataggio del contenuto scaricato deve essere poi gestito dal programma.

Per utilizzare la classe WebClient, per prima cosa è necessario importare lo spazio dei nomi (Namespaces in inglese) che la contiene e che, nel nostro caso, si chiama  system.net:

Imports System.Net

Diventa poi banale scrivere il codice che scaricherà materialmente il file che ci interessa:


Dim Contenuto As New WebClient
Contenuto.DownloadFile(link,percorso)

Se il contenuto web che ci interessa scaricare richiede l’accesso con credenziali, un altro interessante metodo della classe WebClient ci viene in soccorso: Credentials

Il codice diventa quindi:

Imports System.Net

Dim Contenuto As New WebClient
Contenuto.Credentials = New NetworkCredential("nomeutente","password")
Contenuto.DownloadFile(link,percorso)

Come visto, scaricare una pagina web con VB.Net  con la classe WebClient è molto semplice, ma non lascia molta libertà al programmatore di intervenire nei vari step (connessione al server, creazione ed invio di una richiesta HTTP valida, lettura dello stream in risposta alla richiesta ecc.).

Per avere pieno controllo su tutte le fasi del download, è necessario utilizzare altre due classi sempre presenti nel namespace System.Net: HttpWebRequest e HttpWebResponse: vediamo rapidamente una funzione che utilizza queste classi:

Imports System.Net

Public Class Form1

    Private Sub bnStart_Click(sender As System.Object, e As System.EventArgs) Handles bnStart.Click
        Procedura()
    End Sub


    Sub Procedura()

        Dim ContenutoWeb() As Byte
        ContenutoWeb = ScaricaFileWeb("link-al-file-da-scaricare")
        My.Computer.FileSystem.WriteAllBytes("d:/filescaricato.boh", ContenutoWeb, append:=False)

    End Sub

    Public Function ScaricaFileWeb(link)
        Dim wr As HttpWebRequest
        Dim risposta As HttpWebResponse

        wr = Net.WebRequest.Create(link)
        risposta = wr.GetResponse

        Dim SourceStream As Stream
        SourceStream = risposta.GetResponseStream()
        Dim Buffer(4096) As Byte, BlockSize As Integer
        Dim TempStream As New MemoryStream
        Do
            BlockSize = SourceStream.Read(Buffer, 0, 4096)
            If BlockSize > 0 Then TempStream.Write(Buffer, 0, BlockSize)
        Loop While BlockSize > 0

        Dim FileWeb() As Byte
        FileWeb = TempStream.ToArray()
        SourceStream.Close()
        risposta.Close()

        Return FileWeb

    End Function

End Class

Il codice qui sopra, si riferisce ad una piccola applicazione Windows creata in VB.Net con un Form con un solo bottone (bnStart) che chiama una procedura che, a sua volta, utilizza la funzione più completa per scaricare una pagina da web con VB.Net.

Questo codice in realtà può scaricare sia una pagina di contenuto testuale sia qualsiasi altro tipo di file binario (pdf, immagini, programmi eseguibili ecc.)

Una piccola notazione: quello che viene scaricato dal link impostato, è un flusso dati binario, che viene poi salvato in un file: sta a noi decidere qual’è il nome del file in cui vogliamo salvare il flusso dati ricevuto, ma dobbiamo stare attenti ad impostare una estensione del file congrua con i dati che abbiamo scaricato.

Se infatti scarichiamo un’immagine e chiamiamo il file “miofile.txt”, quando andremo ad aprirlo, verrà caricato in un editor di testo, mostrando solamente geroglifici: ricordiamoci quindi di mettere sempre l’estensione giusta nel nome del file da salvare!

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *