PDA

View Full Version : [VB6] Scaricare pagina html


ASyd
09-10-2003, 00:57
Vorrei sapere come e quale controllo potrei usare per collegarmi ad un url e analizzare il codice html della pagina trovata (per esempio cercare una determinata stringa all'interno di essa).

Grazie per le risposte

matpez
09-10-2003, 14:02
Se ti è possibile cerca di utilizzare meno controlli possibili perchè...primo l'exe + grosso e secondo devi mandare sempre i file che di solito il pc senza VB nn ha....

...detto questo ci vengono in aiuto le funzioni API :D


Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256

Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Public Function GetURLSource(sURL As String) As String

Dim sBuffer As String * BUFFER_LEN
Dim sData As String
Dim lInternet As Long
Dim lSession As Long
Dim lReturn As Long


DoEvents

'prendo l'handle della connessione corrente
lSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)

'prendo l'handle dell'URL
If lSession Then
lInternet = InternetOpenUrl(lSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
End If

'se c'è l'handle dell'URL passo alla lettura della pagina
If lInternet Then
Call InternetReadFile(lInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sBuffer
Do While lReturn <> 0
Call InternetReadFile(lInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sData + Mid$(sBuffer, 1, lReturn)
Loop
End If

'chiudo l'URL
Call InternetCloseHandle(lInternet)

GetURLSource = sData

End Function


Una volta che ti sei scaricato la pagina nella varibile usa pure la funzione InStr per cercare dentro...:p

ciaooooooooooooooo :)

ASyd
09-10-2003, 17:10
Azz... non riesco ad ottenere un risultato.

Mi potresti dare qualche info in + su come utillizzarla?

tnx

bsummer
09-10-2003, 17:17
Oppure utilizza il controllo di trasferimento internet 8da aggiungere nel progetto aprendo la finestra componenti e selezionando "Microsoft internet transfer protocol 6.0").

Un esempio?

' Il controllo casella di testo Text1 contiene il
' risultato del metodo. Il nome del controllo
' trasferimento Internet è Inet1.
Text1.Text = Inet1.OpenURL("http://www.microsoft.com")

Ed in Text1 compare il codice html della pagina...

Aloha!

matpez
10-10-2003, 02:34
Originariamente inviato da ASyd
Azz... non riesco ad ottenere un risultato.

Mi potresti dare qualche info in + su come utillizzarla?

tnx

Come ho già detto..meno controli usi e meno è grosso il tuo pacchetto....

Quella funzione è fatta cosi è funziona....cos'è che ti da problemi?