Newsgroup: it.comp.lang.visual-basic
Titolo: lettura pagina html

Esaminate il testo che segue:
---------------------------------
Dim testo As String, laData As String
Dim es(10, 1 To 5) As Byte
nConnessioni = nConnessioni + 1
wb.Navigate "
http://www.televideo.rai.it/nazionale/solotesto.asp?tlv=591
"
Do Until wb.Busy = False
    DoEvents
Loop
wb.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
wb.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
testo = Clipboard.GetText
tx.Text = testo
'da qui in poi eseguo delle istruzioni per reperire il testo
-------------------
Cosa avviene???
Che testo contiene "impossibile visualizzare la pagina..." e quindi ho un
errore...
dopo una frazione di secondo...viene visualizzata la pagina nella maniera
corretta ma...troppo tardi...TESTO contiene "impossibile..."
Ho provato a mettere dei loop ma...fin quando non finisce il loop la pagina
non si aggiorna
:(((

Usa Inet per queste operazioni. E' meglio.
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
"Seminate Linux, che Windows si pianta da sè...." (Antico Adagio)
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it
Sinapsi Antispam. Antispam Gratuito.
http://www.nicolaottomano.it/public/SinapsiAntispam-Setup.exe
email spamtrap: 
spam...@nicolaottomano.it

io avevo fatto come qui sotto ma ottengo la pagina html e non il testo per
come lo legge l'utente dalla pagina:
Private Sub Command1_Click()
Dim strURL As String
Dim bData() As Byte
Dim intFile As Integer
    strURL = "
http://www.televideo.rai.it/nazionale/solotesto.asp?tlv=591
"
    intFile = FreeFile()
    bData() = Inet1.OpenURL(strURL, icByteArray)
    Open App.Path & "\a.html" For Binary Access Write As #intFile
    Put #intFile, , bData()
    Close #intFile
End Sub
"Ottomano Nicola" <amiciT...@nicolaTOGLIQUESTOottomano.it> ha scritto nel
messaggio news:0rIgd.1145$p21...@tornado.fastwebnet.it...


 End Sub
Tu vuoi estrarre solo alcune informazioni dal sito in questione?
In tal caso devi "intrepretare" quello che c'è scritto nella pagina.


 In tal caso devi "intrepretare" quello che c'è scritto nella pagina.
Se vi interessa il televideo io usavo questa applet in webbrowser :
<applet code="EmulatorApplet.class" codebase="
http://www.televideoitalia.it
"
    align="baseline" width="650" height="422" archive="applet.zip">
<param name="Directory" value="/pages/">
<param name="Page" value="104.tlv">
<Param name="Header" value="TELEVIDEO">
</applet>
oppure da 
Televideo.rai.it
 basta leggere il testo che segue :
"<!-- Before Xutils.ProcessHrefs: "
e se non ricordo male c'era un servizio che rispondeva la pagina cercata in
Xml standard pero' me ne ero occupato anni fa e mai + toccati.
-- 
[Gigio2k]
http://www.g2kweb.it
[ it-alt.comp.hardware.modding ] - 
http://www.g2kweb.it/ichm

 In tal caso devi "intrepretare" quello che c'č scritto nella pagina.
-------------------
quello che segue...
nConnessioni = nConnessioni + 1
wb.Navigate "
http://www.televideo.rai.it/nazionale/solotesto.asp?tlv=591
"
Do Until wb.Busy = False
    DoEvents
Loop
su:
wb.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
wb.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
interpreta la pagina. Ma il problema mio č che "legge cosě in fretta" da non
lasciare il tempo alla pagina di caricarsi e quindi...
mi da come testo "impossibile visualizzare la pagina"
Se invece inserisco un msgbox() ... il testo restituito č quello voluto
Ho detto msgbox e non un loop in quanto, se uso il loop, per il tempo in cui
il loop č attivo...la pagina non comincia a caricarsi

Ripropongo il mio problema cercando di essere più chiaro possibile.
Guardate il codice seguente:
----------------------------------------------------------------------------
-
wb.Navigate "
http://www.televideo.rai.it/nazionale/solotesto.asp?tlv=591
"
wb.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
wb.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
----------------------------------------------------------------------------
-
con le righe di codice in questo modo il programma legge "impossibile
visualizzare la pagina"
se tra la prima riga e la seconda metto un msgbox() il programma legge i
dati veri della pagina
se tra la prima riga e la seconda metto un loop (del tipo for x = 1 to
1000000) il programma non continua a caricare la pagina fino a quando non è
terminato il loop.
Considerando che l'applicazione vorrei mi funzionasse autonomamente (quindi
non posso cliccare sul bottone OK della msgbox() )
per piacere suggeritemi un modo per guadagnare tempo tra la prima e la
seconda riga.
Ricordo ancora una volta che un msgbox AIUTA ma non posso cliccarlo
e che un LOOP è inutile :(((

 terminato il loop.
hai per caso provato ad inserire istruzioni tipo <<DoEvents>> o 
  <<Sleep()>> nel ciclo, in modo da non tenere piena la CPU ?
Si tratta solo di lasciare il processore idle per un po' 
suppongo (cosa che tutti gli input asincroni, specialmente se 
Modal, fanno se l'utente non digita niente)
ciao
cccp++mario


 ciao
Si, ho provato con insuccesso :(((

 ha scritto nel messaggio
news:N%dhd.238318$35.11...@news4.tin.it...

prova a fare così:
metti un timer impostato su false e intervallo a 1000ms
al cui interno ci inserisci le funzioni per leggere la pagina web:
sub timer_timer_blablabla
'istruzioni per leggere
timer.enable=false
end sub
poi subito dopo l'istruzione
wb.Navigate "
http://www.televideo.rai.it/nazionale/solotesto.asp?tlv=591
"
ci metti
timer.enable=true
cosi dopo un secondo (poi fai le prove diminuendo il tempo...) parte la
funzione timer che esegue le istruzioni per leggere la pagina
poi metterei all'interno della funzione timer anche un controllo su ciò che
viene restituito:
se il testo della pagina contiene: "Impossibile visualizzare blablabla..."
non disattivi il timer cosi tra 1 sec riprova a leggere fino a che non
passano tot secondi (che conterai usando una variabile a livello di modulo,
e ricordati di azzerarla ogni volta che parte l'istruzione per navigare la
pagina), e l'app dirà che non è riuscita ad pottenere la pagina
che ne dici? .fammi sapere
ciao
marco

 ha scritto nel messaggio
news:2umin2F...@uni-berlin.de...


 Grazie mille!
[cut]
Son contento!! :-)
grazie a te che mi hai fatto scoprire il servizio televideo rai solo testo
di cui non ne ero a conoscenza... mi potrebbe risultare utile in futuro
ciao!
marco

"Salvatore Paci"
non so cosa hai cercato (non ho piu il post iniziale)
se lo chiedi ti posto tutto il codice (un paio di kb)
Version Compatibility:  Visual Basic 5   Visual Basic 6
More information: This function is intended as an alternative to using the
OpenURL method Microsoft's Internet Transfer control
for obtaining the contents of a web page. That control has a bug whereby
you will not always get the full contents of the page.
See the article 
http://support.microsoft.com/support/kb/articles/Q232/1/94.ASP
for more details. In fact, this function is just a more generic version of the
workaround presented in that article.
Return the Contents of a Web Page Using WinInet API
Author: Intelligent Solutions Inc. (Featured Developer)
segue codice
PS:
perche' non scarichi semplicemente la pagina e poi la leggi sul hd ?
'esempio *.vbs
x = TextFromHTML("
http://www.google.it
")
'WScript.Echo x
Function TextFromHTML(URL)
  set ie = createobject("internetexplorer.application")
  ie.navigate URL
  do until ie.readystate = 4 : wscript.sleep 10: loop
  TextFromHTML = ie.document.body.innerText
  ie.quit
End Function
filename = "Google.log"
set oShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set newf = fso.createtextfile(filename)
newf.WriteLine x
newf.Close
oShell.run"Google.log"
--
Fosco

 Grazie mille!
E se l'utente ha una 56K e i secondi devono essere 10?
No, il timer non è la soluziona, ma solo un accrocchio alla ben e meglio.
Io invece procederei con Inet oppure con il metodo di gigio.


 Io invece procederei con Inet oppure con il metodo di gigio.
non è che prova per un secondo e poi smette, leggi meglio il codice:
prova a leggere la risposta OGNI secondo finchè non gli arriva la pagina
poi magari dopo 10-15-20 secondi che la pagina non è stata caricata
lascia perdere...
non è un "accrocchio", è semplice, pulito e funzionale


 Io invece procederei con Inet oppure con il metodo di gigio.
----------------------------
Quella procedura verrà usata esclusivamente da me.
Ho un sito di statistica sul gioco del lotto (vi anticipo che è un gioco per
perdere e che nessuno sa come vincere (prevenire le contestazioni è meglio
che curare)) e questa procedura mi serve per aggiornare automaticamente
tutte le pagine del mio sito nel momento in cui sul televideo, a pagina 591
vengono pubblicate le nuove estrazioni.
Stamattina ho stravolto completamente il programma: dato per certo che alle
20:45 la pagina è già caricata...lancio la lettura della pagina alle 20:45
ed il copia & incolla del testo visualizzato + aggiornamento pagine web +
upload delle stesse sul mio sito alle ore 20:46.
Grazie a tutti e...al mio prossimo dubbio.
Es...cogito ergo sum  :)))