Newsgroup: it.comp.lang.visual-basic
Titolo: estrarre il contenuto di una pagina HTML

Salve a tutti, avrei bisogno di un consiglio per il seguente problema:
estrarre una stringa da una tabella di una pagina HTML 
vi spiego , seguendo i consigli del post 
EzqvB...@cadlab.it
sto tentando di farlo con il "document object model" il dato che mi
interessano è contenuto nella 4° tabella, specificatamente nella 2°
riga, la prima e la seconda cella 
sarei grato se qualcuno può darmi una mano
ciao
--
Luca G

 sarei grato se qualcuno può darmi una mano
ARGH!!!!!!!!!!!!!!!!!!!!
praticamente devi interpretare il codice e trovare dove inizia e finisce
cio' che ti serve!
Quando ho letto l'oggetto pensavo che ti servisse estrarre o meglio
convertire da html a txt...
CMQ, per fare quello che dici tu, si puo' fare, ma devi conoscere l'html
(per riconoscere i tag) e poi sapere esattamente dove si trova il testo da
estrarre (e' sempre nella 4a tabella nella seconda riga prima colonna? se si
il gioco e' fatto!).
Prendiamo ad esempio quello che chiedi tu...
Sappiamo che il dato che ci interessa si trova nella 4a tabella, 2a riga, 1a
colonna (sperando che non ci siano tabbelle dentro tabelle...), il
procedimento da seguire sara':
(supposizione iniziale: Si suppone che le 4 tabbelle NON siano una dentro
l'altra ma consecutive fra loro e che NESSUNA delle tabelle, almeno quelle
precedenti a quella che ci interessa, contenga altre tabelle e che il codice
sia scritto in modo CORRETTO)
1) cerchiamo il 3° tag di chiusura delle tabelle (o la quarta apertura, e'
lo stesso):
Fine_prima_tab = InStr(1, HTML, "</table>", vbTextCompare) + 8
Fine_sec_tab = InStr(Fine_prima_tab, HTML, "</table>", vbTextCompare) + 8
Fine_terza_tab = InStr(Fine_sec_tab, HTML, "</table>", vbTextCompare) + 8
2) cerchiamo l'inizio della 4a tabella:
Inizio_quarta_tab = InStr(Fine_terza_tab, HTML, "<table", vbTextCompare)
3) cerchiamo l'inizio della prima riga:
inizio_Prima_riga = InStr(Inizio_quarta_tab, HTML, "<tr", vbTextCompare) + 3
4) cerchiamo l'inizio della seconda riga:
inizio_sec_riga = InStr(inizio_Prima_riga, HTML, "<tr", vbTextCompare) + 3
5) cerchiamo la prima colonna:
inizio_prima_col = InStr(inizio_sec_riga, HTML, "<td", vbTextCompare) + 3
6) cerchiamo la fine del tag della colonna:
fine_tag_col = InStr(inizio_prima_col, HTML, ">", vbTextCompare) + 1
7) cerchiamo la fine della cella scelta:
Fine_prima_col = InStr(fine_tag_col, html, "</td>", vbTextCompare)
8)  estraiamo il contenuto della 1a colonna, 2a riga, 4a tabella:
contenuto = Mid(html, fine_tag_col, Fine_prima_col)
Okkio che cosi' estrarrai anche i codici html (font e simili) contenuti
nella cella specificata...
Cosi' e' un po' macchinoso e "riggido", ma funzionante...
Io ti ho dato un input, ora trova tu la soluzione + adatta alla tua
richiesta ;)
Ciao ;^)=
--
RedFoxy

 riga, la prima e la seconda cella
   Dim Tables As IHTMLElementCollection
    Dim Table As IHTMLTable
    Dim Rows As IHTMLElementCollection
    Dim Row As IHTMLTableRow
    Dim Cells As IHTMLElementCollection
    Dim Cell As IHTMLTableCell
    Set Tables = iDoc.getElementsByTagName("TABLE")
    For Each Table In Tables
        Set Rows = Table.Rows
        For Each Row In Rows
            Set Cells = Row.Cells
            For Each Cell In Cells
                     MsgBox Cell.cellIndex
            Next
        Next
    Next
questo è un esempio per ricercare celle è righe siguramente potrai tirarne
fuori qualcosa
ciao

    Dim Cell As IHTMLTableCell
mi potresti spiegare come hai costrutio il tipo delle variabili?
ciao 
--
Luca G

 ciao
ah si certo....devi aggiungere un references a "microsoft html object
library" dal menu "project\references"
ciao :)


per completezza storica se qualcun altro avrà bisogno posto la
soluzione che senza "Tino", che ringrazio pubblicamete, non avrei mai
raggiunto, è di una semplicità unica ;))))
il mio problema era il seguente:
Estrarre attraverso il DOM  "document object model" dei dati da una
tabella  di una pagina HTML, specificatamete nella 4° tabella,  2°
riga, la prima e la seconda cella 
 
	Dim doc As Object	  
	Set doc = pDisp.Document
	Dim Tables As IHTMLElementCollection
	Set Tables = doc.getElementsByTagName("TABLE")
	Nome = Tables(3).Rows(1).Cells(0).innerText
	indirizzo = Tables(3).Rows(1).Cells(1).innerText
tutto qua ;)))))))))
N.B. 
le collection hanno base 0
ciao a tutti 

raggiunto, è di una semplicità unica ;))))
P.S. ringrazio logicamente anche RedFoxy per l'interessamento  ;))