Italian [Off Topic] - Vb.net download dom webbrowser

IlCasti

Active Member
Licensed User
Longtime User
Ciao a tutti
Apro un piccolo off topic per sapere cosa ne pensate a riguardo.
Ho un'app che deve scaricare pagine dom piene di ajax che caricano il contenuto allo scroll verticale dell pagina stessa.
Ho implementato la classe aprendo la pagina, sendando il pgdwn a nastro per x secondi e salvando il contenuto al termine di un ciclo predefinito di x secondi (non so quanto può essere grande; stimo tra i 700kb e gli 11/12 Mb.)
Problema a parte del webbrowser che ha un leak di memoria infinita, voi che approccio usereste?

Grazie a tutti coloro i quali abbiano un'idea e la vogliono condividere.
Ciao :)
 

LucaMs

Expert
Licensed User
Longtime User
Ti aiuterei volentieri ma ancora non conosco l'arabo :D

[Non che tu abbia scritto male ma non conosco questi argomenti; mi pare di ricordare molto vagamente che dom stia per Document Object Model, ma arrivo solo fin qua e non sono nemmeno certo che tu parli di questa roba].


P.S.
Ajax mi ricorda soltanto una squadra di calcio olandese!
 

IlCasti

Active Member
Licensed User
Longtime User
Hai centrato l'argomento. :)
In sostanza è una pagina che dopo aver mostrato la sorgente html non ti mostra il contenuto, ma solo le chiamate che fa per popolarla (ajax - tra l'altro diventata una squadra si scarponi) e quindi si usano com e metodi particolari per scaricarla quando però è completa.
Il problema è che questa pagina una volta caricata non lo è e per renderla tale mi tocca mandare dei send key di scroll per popolare tutta la griglia che mi serve.
Chiedevo se qualcuno conosce un modo per fare tutto one shot.
Tra l'altro il webbrowser è un componente che mangia memoria a go-go e tu pensa, al primo giro devo caricare qualcosa come 600+ link.. Overflow a nastro. :(
 

sirjo66

Well-Known Member
Licensed User
Longtime User
il tuo approccio sembra corretto, dato che con codice ajax non hai tante alternative se non quella di sendare il tasto come giustamente hai fatto tu, dato che il DOM non è ancora completo fino a quando non hai caricato tutta la pagina.
Io ho tentato di simulare la chiamata ajax con VB.NET ma non ci sono riuscito e quindi l'unica è proprio fargliela fare al webbrowser che (purtroppo) ha i suoi problemi.
Ma alla fine riesci a ricavarti la pagina completa ??
 

IlCasti

Active Member
Licensed User
Longtime User
il tuo approccio sembra corretto, dato che con codice ajax non hai tante alternative se non quella di sendare il tasto come giustamente hai fatto tu, dato che il DOM non è ancora completo fino a quando non hai caricato tutta la pagina.
Io ho tentato di simulare la chiamata ajax con VB.NET ma non ci sono riuscito e quindi l'unica è proprio fargliela fare al webbrowser che (purtroppo) ha i suoi problemi.
Ma alla fine riesci a ricavarti la pagina completa ??

Si si, sto riscrivendo il programma per ovviare al leak del webbrowser, perchè deve fare tutto in automatico.
In sostanza prima potevo anche guardarlo di tanto in tanto e gestire le eccezioni a manina facendolo ripartire.
Siccome è un programma che mi deve scaricare tutto in un db per la mia app (ancora molto acerba) e lo deve fare in autonomia
Adesso devo gestirmi il restart dell'app con opportune modifiche perchè la garbage collection si pulisce solo al termine dell'eseguibile.
L'ideale, per i tempi, sarebbe stato poter salvarla al volo senza dover aspettare. Lavoro con i timer, non sapendo quanto possa esser grande la pagina.
15 secondi ho constatato siano l'ideale con la connessione che ho. Tutto ci mette circa 2 ore e mezza per 600+ pagine. E questo è solo per il primo dei 5,6,7 siti che devo loopare.. Tutti i giorni..

Ora una cosa che potrebbe aiutarmi sarebbe sendare lo scroll ad applicazione ridotta in tryicon, non so se si può fare.. Altrimenti deve sempre rimanere in primo piano e io non posso usare il pc...
 
Top