Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

copiare dati da un sito Web->Excel 2007

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

copiare dati da un sito Web->Excel 2007

Postdi papiriof » 13/01/13 12:56

Vorrei copiare in un file di excel alcuni dati di un sito Web tale: http://www.ibolli.it/index.php
Trattasi di un catalogo on line di francobolli con tutti i dati tecnici, valutazione, immagini, tirature ecc ecc è evidente che è sviluppato con un enorme database relazionale il mio scopo è quello di formarmi un database con excel dove metterei i dati essenzialiche mi permettano di individuare facilmente il numero di catalogo, l'immagine, il soggetto della vignetta,il valore di catalogo , il num di esemplari che possiedo per determinare il valore totale .
Tutte queste informazioni sono contenute in questo sito solo che sono messe in modo che molto dispendiose in termini di tempo per acquisirle .
Qualche dritta o cè qualcuno che ha avuto a che fare con questo problema?
Win 7+Office 2007... ma preferisco convertire in Office 2003
papiriof
Utente Senior
 
Post: 152
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: copiare dati da un sito Web->Excel 2007

Postdi Anthony47 » 14/01/13 03:03

Tecnicamente puoi fare quel lavoro esaminando il codice html delle pagine sorgenti e poi applicando le tecniche di analisi rese disponibili dalla libreria mshtml.tlb , corrispondente alla Microsoft Html Object Library.
Trovi la documentazione qui: http://msdn.microsoft.com/en-us/library ... 85%29.aspx, voce MSHTML. (MSDN Library- Web Development- Internet Explorer Development- Hosting and Reuse)

Recentemente sono stati pubblicati molti spunti su domande poste dall' utente mpsinf.

Ad esempio con una macro come questa ho riportato su un foglio excel la sintesi di una sintesi del catalogo "lombardo veneto":
Codice: Seleziona tutto
Sub francobolli()
'
Dim myColl As Object, my2Coll As Object, JJ As Long
Dim I As Long, J As Long, K As Long, myPicUrl As String, myUrl As String
Dim myImg(0 To 300)    'Usato per link alle imagini
Dim myLink(0 To 300)    'usato per i relativi link
'
'Indirizzo di una collezione a caso
myUrl = "http://www.ibolli.it/cat/asi/lveneto/lveneto.php"   '<<

Set IE = CreateObject("InternetExplorer.Application")
With IE
    .navigate myUrl
    .Visible = True
    Do While .Busy: DoEvents: Loop    'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With

myStart = Timer
Do
    DoEvents
    If Timer > myStart + 1 Or Timer < myStart Then Exit Do
Loop
'
Sheets("Foglio1").Select
'Azzera immagini e testi esistenti
For Each Pict In ActiveSheet.Shapes
    Pict.Delete
Next Pict
Cells.Clear
Cells.RowHeight = 12.75

JJ = 2
'cerca Immagini e descrizioni
Set myColl = IE.document.getelementsbytagname("div")
aaa = myColl.Length
'Fase1, si prelevano i nomi delle immagini e il relativo link
For I = 0 To myColl.Length - 1
    If myColl(I).classname = "child" Then
        With myColl(I)
        Set my2Coll = .getelementsbytagname("A")
            bbb = my2Coll.Length
            K = 0
            For J = 0 To my2Coll.Length - 1
                If my2Coll(J).classname = "im" Then
                    Set dddColl = my2Coll(J).getelementsbytagname("img")
                    CSource = my2Coll(J).innerhtml
                    myImg(K) = Replace(Mid(CSource, InStr(1, CSource, " s=") + 4, 999), """>", "")
                    myLink(K) = my2Coll(J).href
                    K = K + 1
                End If
            Next J

'fase 2, si cercano le descrizioni e si importano le immagini
        Set my2Coll = .getelementsbytagname("div")
            For J = 0 To my2Coll.Length - 1
                If my2Coll(J).classname = "ef" Then
                    aadd = my2Coll(J).getelementsbytagname("a")
                    Inarr = Application.Match(aadd, myLink, 0)
                    If Not IsError(Inarr) Then
                        Cells(JJ, Inarr) = my2Coll(J).innertext
                        aaa1 = InStrRev(myUrl, "/")
                        myPicUrl = Left(myUrl, aaa1) & myImg(Inarr - 1)
                        Cells(JJ + 1, Inarr).Select
                        ActiveSheet.Pictures.Insert(myPicUrl).Select
                        If Cells(JJ + 1, Inarr).Width < Selection.Width Then _
                            Cells(JJ + 1, Inarr).ColumnWidth = (Selection.Width / 5)
                        If Cells(JJ + 1, Inarr).Height < Selection.Height Then _
                            Cells(JJ + 1, Inarr).RowHeight = Selection.Height
                    End If
                End If
            Next J
    Rows(JJ).EntireRow.AutoFit
       
        JJ = JJ + 3
        End With
    End If
Next I
'
'Chiusura IE
IE.Quit
Set IE = Nothing
'
End Sub

Ho ottenuto un risultato come quello dell' immagine (particolare del risultato)
Immagine

Uploaded with ImageShack.us

Ovviamente il testo puo' essere ulteriormente selezionato e formattato a piacere.

Ho detto che "Tecnicamente" puoi fare quel lavoro, ma credo che legalmente non potrai farlo, in quanto tutte quelle informazioni sono pubblicate sotto una Licenza Creative Commons, che tra le altre condizioni (ti raccomando di consultarle), precisano:
Non opere derivate — Non puoi alterare o trasformare quest'opera, ne' usarla per crearne un'altra

Per questo non potro' aiutarti in aggiunta al "prototipo dimostrativo" pubblicato sopra.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: copiare dati da un sito Web->Excel 2007

Postdi papiriof » 14/01/13 10:12

Grazie Anthony47 soprattutto per le raccomandazioni legali, del resto tecnicamente non sono in grado di gestire un progetto che abbia alcunchè di commerciale , molto più modestamente mi serviva una fonte dove potevo ricavare in modo veloce il "n di un singolo catalogo " la descrizione del singolo valore" ed eventualmente il link x l'immagine di questo valore x non appesantire il file di excel.Tutti gli altri campi sono campi personali tipo dove si trovano materialmente i francobolli (classificatore x, Cassetto y, Busta z)num di esemplari nuovi,num di esemplari usati posseduti ecc.
Vedi Anthony i filatelisti hanno delle esigenze tutti molto personali, i programmi che sono in commercio che pure ho possono essere buoni x una cosa ma non x un altra.Da come hai affrontato il problema penso che non sei digiuno di filatelia (Filatelista?) quindi potrai capirmi sulla filosofia di un collezionista .
Concludendo pensi che commetta una sorta di reato se in un file di excel "Strettamente personale" metto un campo dove inserire il linck di quel singolo francobollo prelevato su quel sito?
Win 7+Office 2007... ma preferisco convertire in Office 2003
papiriof
Utente Senior
 
Post: 152
Iscritto il: 16/02/10 13:23

Re: copiare dati da un sito Web->Excel 2007

Postdi Anthony47 » 15/01/13 02:01

Non ho nessuna preparazione legale, ma le parole usate nelle condizioni d' uso dicono che quello che intendi fare non ti e' concesso, anche per finalita' non commerciali; che poi il proprietario delle informazioni decida di volerti perseguire mi sembra poco probabile. Ma potrebbero trovare molto piu' logico prendersela con l' organizzazione e le persone che la cosa la rendessero piu' facile.
Il problema non e' un eventuale link al loro sito, ma l' uso all' interno di un altro documento delle informazioni da loro rese disponibili sul sito: descrizione, dettagli storici, prezzi, immagini e quant' altro.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "copiare dati da un sito Web->Excel 2007":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti