13/12/2007

Effettuare il download di un file da Internet

A cura di Efran Cobisi
Tag: Network


La classe System.Net.WebClient permette in maniera semplice e veloce di scaricare dati da qualsiasi rete, utilizzando i protocolli più diffusi. Il metodo DownloadFile() consente in una sola riga di codice di scaricare un file e memorizzarlo in una determinata posizione:
(New-Object Net.WebClient).DownloadFile("http://www.powershell.it", "c:\temp\Home.htm")
Nel caso in cui, invece, sia necessario manipolare direttamente dall'interno di PowerShell i dati provenienti dalla rete, è sufficiente utilizzare il metodo DownloadData() che, fornito un indirizzo, scarica la risorsa indicata e la ritorna sotto forma di array di byte:
$data = (New-Object Net.WebClient).DownloadData("http://www.powershell.it")
L'output ritornato è naturalmente riutilizzabile associandolo ad una variabile o mettendolo in pipe su di un altro comando:
PS C:\Documents and Settings\Ikmju>$wc = New-Object Net.WebClient
PS C:\Documents and Settings\Ikmju>$data = $wc.DownloadData("http://www.powershell.it")
PS C:\Documents and Settings\Ikmju>$data | Select-Object -First 5
13
10
13
10
60

Commenti


11/02/2009 11.31
nicola75ss: salvataggio in formato mht
Ciao Efran. Stavo facendo una ricerca in merito al download di pagine web e sono finito qui. Tutte le strade portano a powershell.it :)

Lo script funziona perfettamente ma mi domandavo se esistesse un modo per salvare le pagine scaricate in formato mht. Se specifico tale estensione anzichè htm, il file viene salvato, ma internet explorer mi visualizza il codice sorgente della pagina. Ho cercato in lungo e in largo ma non ho trovato niente.
11/02/2009 12.14
efran.cobisi: RE: salvataggio in formato mht
L'ho detto io, powershell.it rulez! ;)

Purtroppo non esiste un componente all'interno del framework Microsoft.NET in grado di salvare tutto il contenuto relativo ad una particolare pagina in formato mht.
In realtà mht è un file codificato MIME multipart (lo stesso formato utilizzato per spedire le email in formato html, per intenderci). So che Microsoft aveva dei piani per aggiungere in futuro il supporto per la persistenza in formato mht alla classe MailMessage, utilizzata, appunto, per i messaggi da inviare via email.

Ad oggi potrei solo consigliarti di utilizzare un componente di terze parti, come Chilkat MHT Component oppure di sviluppare la funzionalità (sempre che tu sia uno sviluppatore).

HTH


Cobisi EmailVerify.NET is a Microsoft .NET software component that validates email addresses. valid email