Leggere codice HTML

lunedì 14 febbraio 2011 - 17.17
Tag Elenco Tags  VB.NET  |  .NET 3.0  |  .NET 3.5  |  .NET 4.0  |  Windows 7  |  Windows Vista  |  Windows XP  |  Visual Studio 2010  |  Visual Studio 2008  |  Internet explorer 8.0  |  HTML 4.01  |  XHTML 1.0  |  XHTML 1.1  |  XHTML 2.0

fra.12 Profilo | Newbie

ciao ragazzi,
ho un problema con vb.net.. in pratica voglio ke il programma mi legga il codice HTML di una data pagina web e dopo di ke deve prendere un link ke è contenuto a un determinato rigo..
come posso fare?? vi prego aiutatemi!!

alx_81 Profilo | Guru

>ciao ragazzi,
ciao

>ho un problema con vb.net.. in pratica voglio ke il programma
>mi legga il codice HTML di una data pagina web e dopo di ke deve
>prendere un link ke è contenuto a un determinato rigo..
>come posso fare?? vi prego aiutatemi!!
prova a controllare questo metodo. Dovresti ottenere lo stream della lettura http.
http://msdn.microsoft.com/en-us/library/system.net.webresponse.getresponsestream.aspx

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

fra.12 Profilo | Newbie

>prova a controllare questo metodo. Dovresti ottenere lo stream
>della lettura http.
>http://msdn.microsoft.com/en-us/library/system.net.webresponse.getresponsestream.aspx


sks nn è ke potresti anke dirmi il significato delle varie righe di codice, e anche come faccio a visualizzare il link ke vorrei ottenere xkè nn ci ho capito un gran che?!?!

Qwertj Profilo | Newbie

Quel link là mi sembra totalmente inutile, poichè serve per comunicare a livello di protocollo, non per leggere HTML
Se usi il controllo WebBrowser, puoi utilizzare la proprietà DocumentStream


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

allora x prendere il codice html ci sono riuscito ma nn sai soddisfare la seconda parte della mia domanda?? cioè come predere il link ke è contenuto ad un determinato rigo del codice html???

Qwertj Profilo | Newbie

Che devi cercare precisamente?


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

devo cercare un link ad un determinato rigo.. "http://www."

come posso fare..

Qwertj Profilo | Newbie

Uhm...
Potresti fare così:
1. Leggi il documento HTML
2. Crei una RichTextBox (nel codice, senza che si veda nella form, Es. Dim txt as New RichTextBox)
3. Cicli tra le linee della RichTextBox usando la proprietà Lines
4. A ogni ciclo usi InStr(Lines, "link che cerchi") per cercare il link

Dovrebbe andare


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

si l'idea è giusta ma cosi inizierebbe un ciclo ke dura tantissimo xkè quella stringa si ripete moltissime volte e di conseguenza ci metterebbe troppo tempo..
x questo ho la necessita dii fare la ricerca solo su un rigo preciso..

Qwertj Profilo | Newbie

Bè scusa
Dim Matched as Boolean Dim LineNumber as Integer With Browser.DocumentStream Do Until .EndOfStream LineNumber += 1 If InStr(.ReadLine, "href=""www.pincopallo.net""") > 0 Then Matched = True Exit Do End If Loop End With If Matched Then MsgBox("Link trovato! Riga " & LineNumber) Else MsgBox("Link non trovato!") End If

Ci mette un nientesimo di secondo


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

Qwertj mi da errore dove c'è scritto With Browser.DocumentStream mi dice ke browser nn è dichiarato.. provo a cambiare il nome con quello del mio webbrowser xò a questo punto mi danno errori: Do Until .EndOfStream ; If InStr(.ReadLine..dice ke nn è un membro System.IO.Stream

come posso fare..

Qwertj Profilo | Newbie

E' un problema di tipo...
Prova così:
'Prima della with Dim DocStream as StreamReader = Browser.DocumentStream 'la with la modifichi così With StreamReader '.... End With
Browser è il nome del controllo WebBrowser che utilizzi, mi sembra ovvio



Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

>Dim DocStream as StreamReader = Browser.DocumentStream
>With StreamReader
mi dice tipo Stream Reader non definito.. importo "System.IO" ma poi mi evidenzia "Browser.DocumentStream" dice impossibile convertire un valore Stream in StreamReader


uffi

Qwertj Profilo | Newbie

Ho trovato una soluzione migliore.
For Each Link As Windows.Forms.HtmlElement In Browser.Document.Links If Link.GetAttribute("href") = "www.unsito.com" Then MsgBox("Ho trovato il link!") Exit For End If Next
Se vuoi approfondire, guarda qui:
http://totemslair.org/guide/viewchapter.php?guida=vb&id=80



Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

allora sintetizziamo il mio problema, perchè il tuo codice è esatto e funziona, ma nn è ciò ke cerco.. dunque io sono in una pagina web e voglio ke il mio programmi scarichi un file, ke altrimenti si avvierebbe solo dopo la pressione di un button che in questo caso si chiama "down_butt1"..

perciò quello ke cerco è ke il programma faccia in automatico quello ke dovrei fare io, cioè "cliccare" quel bottone

Qwertj Profilo | Newbie

C'è un abisso di differenza tra "trovare un link in un determinato rigo" e "cliccare un bottone"
Allora...
Se il tag del form in cui è contenuto il pulsante ha un attributo id fai così:
WebBrowser1.Document.GetElementById("id_del_form").InvokeMember("submit")


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

ehhh sisi lo so mi sono espresso una merda XD.. cmq nn ho capito tnt bene il tuo codice xkè nn va..
Il codice HTML è questo:

<div class="down_butt_pad1" style="display:none;" id="downloadlink"><a href="http://www.dotnethell.it/file1.jpeg" class="down_butt1"

ecco il programma deve deve scaricare il file "file1.jpeg"

Qwertj Profilo | Newbie

Allora vuoi capire come si fa o vuoi che te lo faccia io il codice?
Se tu ti fossi preso la briga di andare a vedere il link che ti ho postato ci saresti riuscito da solo.
Ma evidentemente, ti tira.

Ti risponderò nuovamente quando mi farai vedere un po' di codice che hai almeno tentato di scrivere


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

ma calmati cmq se ti sto chiedendo aiuto a quanto pare nn ci ho capito tnt in quel codice.. l'ho letta ttt la pagina ed è molto interessante in quanto ci sono varie istruzioni, ma nn so: primo se quelle ke immagino di usare sono giuste x lo scopo da raggiungere, e secondo come si utilizzano(nel senso della sintassi)..

Qwertj Profilo | Newbie

Io sono calmo, ma sono 2 mesi e rotti che va avanti sto topic e non dimostri una minima voglia di voler riuscirci da solo
Se non capisci bene lo scopo di una funzione, puoi leggerne la descrizione nell'IntelliSense (il menu che ti suggerisce cosa scrivere)
Se non hai trovato risposta lì, esistono Google e MSDN
*Solo adesso* chiedi su un forum, facendo vedere ciò che hai buttato giù

In ogni caso...
Nella pagina le spiega tutte le sintassi delle funzioni, ma se proprio non capisci, ti riassumo cosa dovresti fare...
1. Ottieni il div nel quale è contenuto il link tramite GetElementById (il link sarà nella proprietà FirstChild se è il primo elemento figlio, altrimenti lo puoi trovare nell'array Children)
2. Ottieni la proprietà href del link tramite GetAttribute
3. Tramite il metodo DownloadFile di un oggetto Net.WebClient te lo scarichi

Ora non ti rispondo più se non mi fai vedere che ci hai provato...




Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

ma io ho collaborato, x quello ke ho potuto e ke sapevo fare, infatti ho testato i vari codici ke mi hai passato, e detto dove nn andava..
ora ho provato a fare ttt da solo ma mi blocco già alla prima parte. ho fatto così x fare il primo pezzo, ma ovviamente è sbagliato

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
GetElementById(Info("downloadlink")).InvokeMember("submit")
End Sub

Private Sub GetElementById()
Throw New NotImplementedException
End Sub

Private Sub GetElementById(ByVal p1 As String)
Throw New NotImplementedException
End Sub

Private Function Info(ByVal p1 As String) As Object
Throw New NotImplementedException
End Function


xkè nn so nel dettaglio come si usano le funzioni ke mi hai detto

Qwertj Profilo | Newbie

Private Sub GetElementById() Throw New NotImplementedException End Sub Private Sub GetElementById(ByVal p1 As String) Throw New NotImplementedException End Sub Private Function Info(ByVal p1 As String) As Object Throw New NotImplementedException End Function
Spiegamelo, non ci trovo un senso

Non mi puoi dire che non conosci nel dettaglio...
dal link che ti ho dato prima (che, evidentemente non hai provato a capire)

"GetElementById(id As String) : restituisce un riferimento all'elemento con specifico id;"

Non è aramaico, mi sembra che si possa capire!!!!



Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

>
>Private Sub GetElementById()
>Throw New NotImplementedException
>End Sub
>
>Private Sub GetElementById(ByVal p1 As String)
>Throw New NotImplementedException
>End Sub
>
>Private Function Info(ByVal p1 As String) As Object
>Throw New NotImplementedException
>End Function


questa parte me l'ha inserita visual basic in quanto mi dava errore, e mi diceva di inserire il metodo stumb ecc..

Qwertj Profilo | Newbie

.-.
studiati la guida, se no non ci riesci


Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]

fra.12 Profilo | Newbie

A TESTA DI CAZZO SE NN MI VUOI DARE UNA MANO ME LO PUOI TRANQUILLAMENTE DIRE, SENZA KE FAI TUTTI STI GIRI DI PAROLE.. TU KE FAI TUTTO IL SAPUTELLO NELLA VITA KE RAZZA DI UOMO 6.... DI MERDA.. CIOE' NN MI HAI DATO UNA MANO E NN 6 RIUSCITO A RISOLVERE IL MIO PROBLEMA XKè TI FACEVI TNT IL SAPUTELLO DEL CAZZO... MA GUARDA SAREI PROPRIO CURIOSO SE SAI VERAMENTE COME SI FA QUELLA RICHIESTA KE HO FATTO, E CMQ SIA MA VAFFANCULO TU E IL DOWN DI MERDA KE 6... SAPUTELLO DEL CAZZO!!!

totti240282 Profilo | Guru

a pero Oxford complimenti !!!!
C'è solo un capitano !!!!!!

fra.12 Profilo | Newbie

>a pero Oxford complimenti !!!!
>C'è solo un capitano !!!!!!

???????
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5