Importare una tabella da una pagina internet in una datagridview

martedì 15 maggio 2007 - 16.22

bobetu Profilo | Newbie

Ciao a tutti, sono nuovo del forum e anche di vb.net.

Avrei bisogno di estrarre da una pagina internet una tabella di dati ed inserirli in un db access (o una datagridview visto che poi saprei come importarli nell’access).
Ho provato ad utilizzare MSHTML.HTMLDocument ma non ci sono riuscito .

Naturalmente prima di scrivere ho cercato tra i vari post e a parte http://www.dotnethell.it/forum/messages.aspx?ThreadID=14304 (che non essendo in vb non sono riuscito a riutilizzare) avevo trovato http://www.dotnethell.it/forum/messages.aspx?ThreadID=12730 riscontrando gli stessi problemi segnalati nel post (comunque non saprei come modificarlo per adattarlo alle mie esigenze ).

Qualcuno può aiutarmi?

Grazie mille

icchio Profilo | Newbie

Ciao.....
Se il sito web è tuo ti consiglio di utilizzare l'xml e
aggiungerlo al progetto VB direttamente come origine dati....
Naturalmente se il sito non è tuo e il proprietario non rende disponibili pagine xml è un po'
più problematico....

Potresti provare a scorrere l'html come un file e, utilizzando la gestione delle stringhe, prendere i dati che ti servono....

e' un po' una soluzione del ....... ma momentaneamente non mi viene in mente altro.

bobetu Profilo | Newbie

Ciao,

purtroppo il sito non è mio e non ci sono pagine xml.

Avevo già letto da qualche parte la possibilità di leggere l'html per prelevare i dati ma sinceramente non saprei da dove iniziare.

mi potresti dare qualche suggerimento?

Grazie
Roberto

bobetu Profilo | Newbie

ciao,
mi rispondo da solo sperando di poter essere di aiuto a qualcuno.
Il codice che segue preleva i dati dei titoli del mib30 dal sito borsaitaliana. Ovviamente va poi modificato a seconda delle esigenze.



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

GetPageAsString(New Uri("http://www.borsaitaliana.it/bitApp/listino?service=Data&lang=it&main_list=1&sub_list=2"))


End Sub


Public Sub GetPageAsString(ByVal address As Uri)
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
Dim result As String

Try
request = DirectCast(WebRequest.Create(address), HttpWebRequest)

response = DirectCast(request.GetResponse(), HttpWebResponse)

reader = New StreamReader(response.GetResponseStream())

result = reader.ReadToEnd()
Finally
If Not response Is Nothing Then response.Close()
End Try

‘con questo passaggio eleminate tutto il codice html e lo sostituite con un “;”
Dim output As String = Regex.Replace(result, "\<[^\>]+\>", ";")

‘con questo codice spezzate la vostra stringa di codice per creare un array (o almeno credi si chiami così) con tante righe per quanti sono i dati contenuti nella stringa
Dim TestString As String = output
Dim TestArray() As String = Split(TestString, ";")


‘qui creo una tabella con 3 colonne e la formatto

DataGridView1.ColumnCount = 3
DataGridView1.ColumnHeadersVisible = True

' Set the column header style.
Dim columnHeaderStyle As New DataGridViewCellStyle()

columnHeaderStyle.BackColor = Color.Beige
columnHeaderStyle.Font = New Font("Verdana", 10, FontStyle.Bold)
DataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle

‘qui do I nomi alle colonne della tabella
DataGridView1.Columns(0).Name = "colonna 1"
DataGridView1.Columns(1).Name = "colonna 2"
DataGridView1.Columns(2).Name = "colonna 3"


‘ qui creo un ciclo per recuperare le righe che voglio dall’array che ho creato e le metto nel datagridview1
Dim y As Integer = 1
For y = 152 To 794 Step 22

Dim row1() As String = {TestArray(y), TestArray(y + 4), TestArray(y + 6)}
Dim rows() As Object = {row1}
Dim rowArray As String()
For Each rowArray In rows
DataGridView1.Rows.Add(rowArray)
Next rowArray
Next y

DataGridView1.AutoResizeColumnHeadersHeight()

' Resize all the row heights to fit the contents of all
' non-header cells.
DataGridView1.AutoResizeRows( _
DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders)

End Sub



Per far funzionare questo codice dovete avere un form con 1 button1 e un datagridview1.

bisogna inoltre importare:

Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions


Ho commentato un minimo il codice per potervi permettere di modificare le parti che vi interessano.
Spero di essere di aiuto a qualcuno.

Ciao a tutti.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5