il problema vero e proprio e riuscire a leggere il contenuto della pagina di web browser da codice!
...utilizzando, con Gambas 3, la proprietà .Text dell'oggetto WebView.
Ad esempio, per ottenere soltanto le righe della traduzione, si potrebbe, al tuo progetto "Traduttore", ipotizzare un codice aggiuntivo come il seguente:
Public Sub Button2_Click()
Dim ss As String[]
Dim sh, sh2 As Short
ss = Split(Web1.Text, "\n")
For sh = 0 To ss.Max
If ss[sh] Like "TraduttoreDa:*" Then
For sh2 = sh + 6 To ss.Max - 2
Print Trim(ss[sh2])
Next
Endif
Next
End
il problema vero e proprio e riuscire a leggere il contenuto della pagina di web browser da codice!
Ora mi espongo e forse non dovrei visto che mai nemmeno l'ho usato, il controllo. Ma non e' che semplicemente uno puo' caricarci la pagina e scorrere il DOM per vedere se e quali link ci sono? Al limite, uno puo' inserire il codice javascript, tipo
var lista = document.getElementsByTagName(“a”);
nella pagina, dopo averla scaricata, ricomporla per rileggerla e creare la lista dei link, se il componente non lo permettesse, ci sono tanti esempi del codice da usare che si trovano googlando, comunque mi sa che il componente gia' lo fa.
Perché non fai qualche prova ?
Perche' non l'ho mai usato, come faccio a sapere se e' la strada migliore? In ogni caso, avevo capito che lui voleva vedere i collegamenti "puliti" dopo la ricerca su Google, e forse potrebbe, senza usare dom
recuperare la pagina
aggiungere il necessario javascript in fondo alla pagina, sostituendo il </body> con il testo dello script piu' ancora </body>
ricaricare la pagina.
A quel punto, se prende il testo del controllo, ha gia' tutti i collegamenti.
Fai una prova per esempio con questo banalissimo file html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href='/posts/2008/01/20/check_mp3_for_hash_size.html'>Check Mp3 For Hash</a><br>
<a href='/posts/2008/03/22/convertire_wma_in_mp3.html'>Convertire Wma In Mp3</a><br>
<script>
if(document.getElementsByTagName) {
document.writeln(">>><br>")
for(i=0; i < document.getElementsByTagName("A").length; i++)
document.writeln(document.getElementsByTagName("A")[i]+"<br>");
}
</script>
</body>
</html>
Se gli fai stampare anche le righe per mettere i risultati in un div nascosto (basta aggiungerle allo script), nemmeno le vedi, ma con la proprieta' .text dovrebbe essere facile recuperare tutto.
Caro pastrano,
la tua soluzione ogni tanto mi richiamava, e sono tornato più volte a vederla...
Per integrare la tua soluzione con Gambas, diciamo che avrei immaginato questa seguente ipotesi di codice (è necessario attivare anche il componente gb.qt4.webkit, e porre sul Form una WebView): :-[
Private js As String
Public Sub Form_Open()
js = "\n\n<script>" &
"if(document.getElementsByTagName) {\n" &
"document.writeln(\">>><BR>\")\n" &
"for(i=0; i < document.getElementsByTagName(\"A\").length; i++)\n" &
"document.writeln(document.getElementsByTagName(\"A\")[i]+\"<BR>\");}\n" &
"</script>"
WebView1.Url = "http://www.indirizzo_web.xx"
End
Public Sub Button1_Click()
Dim s As String
Dim j As Integer
j = RInStr(WebView1.HTML, "</html>", 1, gb.IgnoreCase)
s = Left(WebView1.HTML, j - 1) & js & Mid(WebView1.HTML, j + 7, Len(WebView1.HTML))
File.Save("/tmp/s.html", s)
WebView1.Url = "/tmp/s.html"
End
:-X
Devo dirti, pastrano, che mi pare tu abbia dato una buona soluzione. :coder:
Un'altra modalità, ma più spicciola, potrebbe essere la seguente:
Public Sub Form_Open()
WebView1.Url = "http://www.indirizzo_pagina_web.xx"
End
Public Sub Button1_Click()
Dim ss As String[]
Dim s As String
ss = Split(Lower(WebView1.HTML), " ", "", True)
For Each s In ss
If s Like "href=\"*" Then
s = Replace(s, "href=", "")
Print = Left(s, RInStr(s, "\""))
Endif
Next
End
:-\