Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Leggere pagina HTML

    Ciao a tutti!
    Nel mio programma ho inserito un web browser che naviga su una pagina di risultati dove c'è una tabella! con un timer effettuo il refresh ogni 2 sec della seguente pagina e tutto funziona!
    Ora però avrei necessità di estrappolare dei dati dalla suddetta tabella! Esiste un modo per fare una cosa del genere?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Certo,
    devi leggere il contenuto di WebBrowser1.Document.Body.OuterHtml ed analizzarlo utilizzando l'oggetto HtmlElementCollection.

    Devi però prima guardarti il codice HTML che hai, e capire se la tabella è definita solo come TABLE oppure se ha un ID associato.
    Se non ha l'ID associato devi capire se è la prima tabella contenuta nell'HTML o se è la seconda o la terza e così via, perchè dovrai utilizzare Table(0) oppure Table(1) oppure Table(2) e così via, se invece ha un ID associato, è più semplice perchè la estrai con GetElementByID

    Comunque se mostri il sorgente HTML da dove devi estrarre i dati posso essere più preciso.

    Sergio

  3. #3
    Io invece di usare un web browser userei un HttpWebRequest per ottenere il contenuto della pagina web, che inserisco in una stringa. Infine usando le espressioni regolari otterrei tutti i dati della tabella.

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Anche io avevo pensato alle espressioni regolari però non trovo nulla di comprensibile che le spieghi!!!

    SirJo il codice cambia sempre quindi uno vale l'altro (se hai tu un codice di esempio va bene uguale insomma) :P

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Ok, invece di WebBrowser puoi usare WebRequest, non cambia nulla, basta che poi analizzi il codice che ti arriva usando l'oggetto HtmlElement, quello ti analizza tutto senza dover usare le espressioni regolari.

    Quando ti chiedevo di mostrare del codice sorgente, non intendevo codice in VB.NET, ho scritto codice in HTML, cioè vorrei vedere la pagina da dove devi estrarre i dati in modo da capire se la tabella è con ID oppure no, e capire come dividere i vari componenti per estrarre quelli che ti servono.

    Sergio
    Ultima modifica di SirJo; 24-03-2014 a 22:12

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Si si ho capito che intendevi è che io vorrei analizzare il codice HTML a prescindere...cioè capire come funziona in generale! Visto che mi capiterà spesso che il codice HTML stesso possa variare (per progetti futuri e altro)

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Si si ho capito che intendevi è che io vorrei analizzare il codice HTML a prescindere...cioè capire come funziona in generale! Visto che mi capiterà spesso che il codice HTML stesso possa variare (per progetti futuri e altro)
    Io volevo vedere il sorgente HTML non per risolverti il problema, ma per spiegarti da dove partire e cosa considerare, poi tutto il resto lo fai tu.

    Sergio

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Il sorgente in questione è un macello xD è molto molto RICCO :P

    Immagina di avere una pagina con 2 tabelle html (senza ID ecc) e di voler recuperare i dati delle tabelle (per intabbellarli per esempio in un datagridview di visual basic .net)!

    Se poi proprio ti serve il codice te lo incollo (ma è un macello credimi :P)!

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Il sorgente in questione è un macello xD è molto molto RICCO :P

    Immagina di avere una pagina con 2 tabelle html (senza ID ecc) e di voler recuperare i dati delle tabelle (per intabbellarli per esempio in un datagridview di visual basic .net)!

    Se poi proprio ti serve il codice te lo incollo (ma è un macello credimi :P)!
    Ok, allora inizierai prima di tutto ad estrarre le tabelle dal codice HTML ed a metterle in una collection facendo così:

    codice:
    Dim tables As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("table")
    Ora avrai tables(0), tables(1), tables(2) eccetera a seconda di quante tabelle ci sono nel tuo codice HTML.

    Individua quale è la tabella che ti interessa (ad esempio la numero 2), poi prendi spunto da questo codice:

    codice:
    For Each ROW As HtmlElement In tables(2).All
        For Each CELL As HtmlElement In ROW.All                      
    
        ..........
        Next
    Next
    Praticamente lavori con HtmlElement e HtmlElementCollection continuando ad estrarre i subdati dall HtmlElement precedente

    Sergio

  10. #10
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grande! Era proprio quel che mi serviva!

    Ho usato questo metodo:

    codice:
       Dim tabelle As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("table")
            For Each tabella As HtmlElement In tabelle
                For Each riga As HtmlElement In tabella.GetElementsByTagName("tr")
                   For Each colonna As HtmlElement In riga.GetElementsByTagName("td")
                      '......
                   next       
                Next
            Next
    


    Ovviamente ho usato altro codice per identificare il numero di colonna ecc!
    Ora resta solo un piccolo dubbio!

    Io ho messo tutto questo codice nell'evento DocumentCompleted del WebBrowser e funziona (la prima volta) solo che io ogni 5 sec faccio un refresh del webBrowser per aggiornare i dati e pensavo che questo rigenerasse l'evento mentre vedo che così non è!
    E' normale? :/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.