http://digilander.libero.it/Cenati Batch Browser |
|
|
||
|
Questo è uno degli script che ho utilizzato
di più da quando l'ho scritto. Fin dalla prima versione. Il tutto
nasce dal fatto che ho una connessione dial-up e poco tempo libero.
Ecco alcuni esempi di righe valide nel file BatchBrowser2.txt: www.ubcfumetti.com/nn/157_r.htm Nei primi due casi ritroverò nella cronologia (history) le pagina htm specificate con le immagini che contengono, esattamente come se avessimo utilizzato Internet Explorer per visitarle. Nel terzo caso troverò il file personaggi.htm nella stessa cartella dello script, ma senza immagini in quanto la subroutine DownloadWithXMLHTTP scarica solo l'oggetto specificato. Avrò quindi il solo file html. Analogamente l'ultimo esempio scarica il PDF e lo salva con un nome diverso nella cartella che contiene lo script. Lo stesso può essere fatto con qualsiasi file, binario o di testo, con qualsiasi estensione. Perchè funzioni, questo programma necessita che sia registrata la libreria dinamica MSXML3.dll oppure MSXML4.dll (Microsoft XML Parser). Molto facilmente questa libreria è già presente nel vostro sistema, ma potrebbe essere stata rimossa da alcuni programmi di pulitura del registro. Perchè non si accorgono che questo script la usa. Prima di passare allo script voglio illustrare queste poche righe che permettono di usare Word per salvare in formato mht (in un solo file ci sono sia il codice html che le immagini). Il funzionamento è semplice. Mentre IE non permette di salvare in mht (tramite comandi esterni di uno script), Word riesce a farlo. Basta usare Word per aprire una pagina web e salvare il documento indicando il parametro corretto (wdFormatWebArchive) per forzare il formato di scrittura. url = "http://www.yahoo.com" path = "c:\yahoo.mht" Const wdFormatWebArchive = 9 set word = createobject("Word.Application") set doc = word.documents.open(url) doc.saveas path, wdFormatWebArchive doc.close word.quit Torniamo invece ora allo script oggetto di questo articolo, che non necessita di word. Copia il programma riportato qui sotto in un file con estensione ".vbs" oppure scarica l'archivio zip contentente lo script.
'BatchBrowser.vbs 'Richiede le pagine web specificate in un file chiamato "BatchBrowser2.txt". 'Apre il file, legge tutte le righe e le mette in un array. 'Poi lancia Internet Explorer e richiede le singole pagine, 'aggiungendo http se manca prima del nome del sito. 'Le pagine caricate resteranno poi nella cronologia e potranno 'essere visualizzate off-line. Non funziona con alcune pagine 'create dinamicamente, a meno che siano l'ultima pagina caricata, 'nel qual caso rimangono visualizzate al termine dello script. '[c] Cenati Giovanni 12.03.02 http://digilander.libero.it/Cenati 'Codice vbs liberamente utilizzabile citando il sito. Dim oIE file = "BatchBrowser2.txt" title = "BatchBrowser - Cenati" set fso= createobject("Scripting.FileSystemObject") If fso.FileExists(file) Then Set txtStream = fso.OpenTextFile(file) ' Apre file di testo. txt = txtStream.ReadAll 'legge tutto il file txtStream.Close 'lo chiude lines = Split(txt, vbCrLf) 'Crea un array delle linee del file Else ' Termina. MsgBox "File '" & file & "' non trovato", vbOKOnly + vbCritical, Title WScript.Quit 1 ' Termina con error code 1. End If ' Crea un oggetto Internet Explorer Set oIE = WScript.CreateObject("InternetExplorer.Application") ' Setta le proprietà della finestra del browser oIE.left = 20 ' La finestra oIE.top = 50 ' in alto a sinistra, oIE.height = 380 ' piccola... oIE.width = 580 oIE.menubar = 0 ' Senza menu oIE.toolbar = 0 ' né barra degli strumenti oIE.statusbar = 0 ' né barra di stato per essere più riconoscibile. oIE.navigate("about:blank") ' Crea un documento HTML vuoto. oIE.visible = 1 for i = 0 to ubound(lines) if trim(lines(i))<>"" then 'Se non è una riga vuota... URL=EstraiUrl( lines(i)) Filename=EstraiFileName (lines(i)) if FileName<>"" then DownloadWithXMLHTTP URL, Filename else DownloadWithIE URL end if 'Filename non vuoto end if 'Riga non vuota next 'Passa alla prossima pagina set oIE=nothing '*** End msgbox "Fine Programma",VbInformation,Title wscript.quit Function EstraiUrl (riga) 'Da una riga composta da URL[blank]FileName estrae la prima parte. 'Se non c'é, aggiunge http prima del testo. if ucase(left(riga,7))<>"HTTP://" then riga="HTTP://" & trim(riga) 'aggiunge "http://" se manca end if Separa = inStr(1,riga," ") 'Trova il primo spazio EstraiUrl=riga if Separa=0 then exit function 'Se non c'è lo spazio restituisce "riga" URL= left(lines(i),Separa-1) 'Prima dello spazio c'è l'URL EstraiUrl=URL end function Function EstraiFileName(riga) Separa = inStr(1,riga," ") 'Trova il primo spazio EstraiFilename="" if Separa=0 then exit function EstraiFileName= right(riga, len(riga)-Separa) 'Dopo lo spazio c'è il nome del file end function Sub DownloadWithXMLHTTP (sSource,sDest) 'Download a file using activeX Object XMLHTTP 'and save to sDest using ADO Stream set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP") oHTTP.open "GET", sSource, False oHTTP.send set oStream = createobject("adodb.stream") Const adTypeBinary = 1 Const adSaveCreateNotExist = 1 Const adSaveCreateOverWrite = 2 oStream.type = adTypeBinary oStream.open oStream.write oHTTP.responseBody oStream.savetofile sDest, adSaveCreateOverWrite set oStream = nothing set oHTTP = nothing end sub Sub DownloadWithIE(sURL) oIE.navigate(sURL) 'Richiede la pagina in internet Do While(oIE.Busy): WScript.Sleep 1000 :Loop WScript.Sleep 1000 Do While(oIE.Busy): WScript.Sleep 1000 :Loop ' Aspetta che IE abbia caricato la pagina. Sleep libera risorse al sistema. ' Serve anche per aspettare le pagine che caricano altre pagine automaticamente. end sub Giovanni Cenati.
|
||
© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com
|