Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Come prelevare link da pagina web?
Forum - Visual Basic 6 - Come prelevare link da pagina web?

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 22:44
Giovedì, 05/01/2012
Salve, sono nuovo del forum e sono quasi sicuro di aver sbagliato sezione, ma  vi giuro che non sapevo dove postare,quindi vi chiedi scusa in anticipo se ho fatto questo, veniamo al dunque, allora vorrei fare un programma con Microsoft Visual Basic 2010 Express che prelevi i link da una pagina web e che metta in una ListBox i link trovati, sarebbe meglio se prendesse solo dei determinati link.

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 13:19
Venerdì, 06/01/2012
Dunque, la sezione giusta è .NET world perchè se usi vb express 2010 il linguaggio è vb.net. Per prelevare i link devi parsare l'HTML della pagina, quindi ti consiglierei di leggere questo capitolo http://totemslair.org/guide/viewchapter.php?guida=vb&id=80.

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 19:55
Venerdì, 06/01/2012
Scusate ma sono un po inesperto,quindi non è che mi potreste postare un esempio...???:-?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:50
Venerdì, 06/01/2012
Ok te lo scrivo io un esempio:
Codice sorgente - presumibilmente VB.NET

  1. Dim wb As New WebBrowser() 'oggetto webbrowser, sarebbe un controllo windows forms per visualizzare pagine web ma qui lo usiamo solo per ricavare un HtmlDocument
  2. wb.Navigate("http:\\www.pierotofy.it") 'naviga con il webbrowser alla pagina che ti serve (da sostituire a pierotofy)
  3. Dim doc As HtmlDocument = wb.Document 'ricaviamo dal webbrowser questo HtmlDocument, un oggetto che consente di ottenere gli elementi della pagina web
  4. For Each link as HtmlElement In doc.Links 'per ogni elemento link nella pagina
  5.  listbox1.Items.Add(link.Text) 'aggiungiamo alla listbox il testo del link
  6. Next


Per prendere solo determinati link, puoi filtrarli mettendo nel ciclo un IF che controlli che si attengano alle condizioni corrette.

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 22:52
Venerdì, 06/01/2012
Grazie mille lo provo subito e vi faccio sapere..:)

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 23:03
Venerdì, 06/01/2012
Ho provato il codice ma non va bene mi da 2 errori i seguenti:



bibimeravilla96 ha allegato un file: Untitled-2.png (43926 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
ampeg (Normal User)
Pro


Messaggi: 124
Iscritto: 21/04/2011

Segnala al moderatore
Postato alle 10:27
Sabato, 07/01/2012
ci ho messo un'oretta per venirne a capo ... comunque


Per prima cosa abbiamo bisogno di aggiungere al progetto l'oggetto COM "Microsoft HTML Object Library" dal quale useremo l'interfaccia "mshtml.HTMLAnchorElement" per ottenere l'informazione che ci interessa

per fare ciò bisogna selezionare "Aggiungi riferimento" dal menu "Progetto" (ps. io uso la versione in inglese di Visual Studio quindi non so se sono corretti i nomi dei menu)

una volta aperta la finestra dei riferimenti selezionare la scheda "COM" e cercare l'elemento "Microsoft HTML Object Library"... e aggiungerlo al progetto

nell'evento di un Button
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  2.  
  3.   'Creiamo un nuovo oggetto WebBrowser
  4.   Dim wb As New WebBrowser()
  5.  
  6.   'Aggiungiamo l'handler all'oggetto creato
  7.   'Questo va fatto perché gli elementi del documento li abbiamo a disposizione solo dopo che il documento ha completato il caricamento della pagina
  8.   AddHandler wb.DocumentCompleted, AddressOf wb_DocumentCompleted
  9.  
  10.   'Carichiamo la pagina che ci interessa
  11.   wb.Navigate("http:\\www.google.it")
  12. End Sub



aggiungiamo il codice nell'evento DocumentCompleted del nostro WebBrowser

Codice sorgente - presumibilmente VB.NET

  1. Private Sub wb_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
  2.  
  3.     'sender è l'oggetto che ha generato l'evento, nel nostro caso il WebBrowser a cui abbiamo aggiunto l'handler, per poterlo usare dobbiamo fare una conversione esplicita con il CType
  4.  
  5.     'ottengo gli elementi (per Links) contenuti nel documento
  6.     For Each he As HtmlElement In CType(sender, WebBrowser).Document.Links
  7.  
  8.       'l'informazione che ci serve è contenuta nell'interfaccia "mshtml.HTMLAnchorElement"... questa interfaccia, importata dall'oggetto COM che abbiamo inserito nel progetto,  è "immagazzinata" come oggetto nella proprietà DomElement di ogni elemento presente nel documento
  9.  
  10.       'per poterla utilizzare anche in questo caso dobbiamo fare una conversione esplicita tramite CType
  11.  
  12.       'il dato utile contenente le informazioni dei link della pagina sono ricavati dalla proprietà "href" dell'interfaccia "mshtml.HTMLAnchorElement"
  13.  
  14.       ListBox1.Items.Add(CType(he.DomElement, mshtml.HTMLAnchorElement).href)
  15.      
  16.       'la proprietà innerText, invece, contiene il testo associato al link
  17.       'ListBox1.Items.Add(CType(he.DomElement, mshtml.HTMLAnchorElement).innerText)
  18.  
  19.     Next
  20.  
  21.   End Sub

  

Ultima modifica effettuata da ampeg il 07/01/2012 alle 12:00
PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 12:02
Sabato, 07/01/2012
Ok grazie mille provo subito....

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 12:58
Sabato, 07/01/2012
Testo quotato

Postato originariamente da bibimeravilla96:

Ho provato il codice ma non va bene mi da 2 errori i seguenti:



Credo che l'errore sia colpa del fatto che quando tenti di leggere l'HtmlDocument il webbrowser non ha ancora caricato la pagina (scrivendo di fretta non avevo tenuto conto di questo fatto); facendo come ti ha suggerito ampeg dovresti risolvere. Aggiungo che secondo me non c'è bisogno di importare mshtml (che occupa circa 9 MB) perchè basta leggere l'attributo href del tag <A> con il metodo GetAttribute (http://msdn.microsoft.com/it-it/library/system.windows.for ...:
Codice sorgente - presumibilmente Plain Text

  1. ListBox1.Items.Add(he.GetAttribute("href"))


Ultima modifica effettuata da GN il 07/01/2012 alle 13:02
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo