Condividi:        

Estrarre un Link da una pagina Web legata ad una Immagine

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

Estrarre un Link da una pagina Web legata ad una Immagine

Postdi Maury170419 » 13/03/19 17:54

Ciao a tutti mi chiamo Maurizio
E il mio problema e questo :
Secondo voi e possibile ricavare un link di una immagine da un sito come le " Previsioni del tempo " ; Quindi variabile di volta in volta Copiarlo e Incollarlo nella Colonna ( A ) del foglio di excel.

Mi spiego meglio : Io Vorrei che da codice vba una volta aperta la pagina web inerente alla località da me scelta , Esempio T( orino )
Da programma dovrebbe essere in grado di estrapolare il link della prima immagine riconducibile alla previsione del tempo di quel momento ; Anche sé a dire il vero : Io vorrei prelevare i primi 5 link .
Però e anche vero che capito come funziona il tutto le altre quattro potrei farle uscire da me .

Premetto che io nel frattempo ho provato ad usare la formula (Alt Testo) e (Src) ma senza ottenere risultato valido.
Voi riuscireste anche solo a darmi una mano parziale in merito Grazie
Saluti da A.Maurizio

(P.S) Il Link per scaricare il file di prova anche se un pochino incasinato e questo :
https://app.box.com/s/luptuyx0fpbyfud0l0ddlz51nb947dex
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Sponsor
 

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Anthony47 » 14/03/19 01:25

Le uniche due sub che servono allo scopo sono queste:

Codice: Seleziona tutto
Sub Rettangolo1_Click()
Dim Y As String, X As String
'
X = Foglio1.Range("K1").Value & ""
Y = Foglio1.Range("K2").Value & ""
myURL = "https://www.worldweatheronline.com/" & X & "/" & Y & "/it.aspx"
Foglio1.Range("A5:G100").ClearContents          'AZZERA l'area dei risultati
Call GetWheatherSub(myURL)
MsgBox ("Fatto...")
End Sub


Codice: Seleziona tutto
Sub GetWheatherSub(ByVal myURL As String)
Dim Y As String, X As String
Dim Getimgurl As HeaderFooter, OggCol As Object, OggCol2 As Object, OggCol3 As Object

'Va Chiamata passandogli l'URL da leggere
'myURL = "https://www.worldweatheronline.com/" & X & "/" & Y & "/it.aspx"
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
'Stop            '*** VEDI Testo
'myStart = Timer  'attesa addizionale
Do
    DoEvents
    If Timer > myStart + 2 Or Timer < myStart Then Exit Do
Loop

'Scrive sul Foglio Attivo
On Error Resume Next
Set OggCol = ie.document.getElementsByClassName("flickity-slider")
Set OggCol2 = OggCol(0).getElementsByTagName("div")
Set OggCol3 = OggCol(0).getElementsByTagName("img")
    For i = 0 To OggCol2.Length
        Range("A5").Offset(i, 0) = OggCol2(i).innerText
        Range("A5").Offset(i, 1) = Replace(OggCol3(i).getAttribute("src"), "//", "", , , vbTextCompare)
    Next i
On Error GoTo 0
Foglio1.Range("A:A").WrapText = False
'Chiusura IE
ie.Quit
Set ie = Nothing
End Sub

Come vedi ho portato nella Sub Rettangolo1_Click (quella collegata al pulsante) la preparazione dell'Url, e nella Sub GetWheatherSub cerco esplicitamente i dati relativi alle immagine della previsione (didascalia delle immagini, sorgente delle immagini)
Ovviamente l'analisi del sorgente html di quella pagina e' stata propedeutica alla stesura del codice.

Se hai domande siamo qua...
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Maury170419 » 14/03/19 12:45

Ciao Anthony47 sono sempre più convinto che darti del Genio sia solo fiato sprecato.
A mio Avviso sei un grande : E come dicono a Roma ( Sei er meio der meio )
Scherzi a parte Grazie del tuo Progetto è fantastico : Ma toglimi una curiosità per fvore .
Dunque :
1 ) Perché io quando divo creare una procedura divento matto nel giustificare ogni singola virgola ; E tu mi scrivi
Codice: Seleziona tutto
 
myURL =


E il programma funziona tranquillamente senza fare una piega.
Forse e dovuto dal fatto che io incomincio quasi sempre dal ( Option Explicit ) ?

2 ) Mi potresti gentilmente spiegare a che cosa servono queste dichiarazioni :
Codice: Seleziona tutto
Dim Getimgurl As HeaderFooter, OggCol As Object, OggCol2 As Object, OggCol3 As Object


Posso solo dedurre che le ultime tre Dichiarazioni siano strettamente legate al Foglio di excel e non alla pagina Html .

3 ) E poi queste tre Funzione mi piacerebbe capirle molto più da vicino ; In quanto le ho viste scritto sotto un altra veste sovente nella pagina HTML ma non ne conoscevo l'utilità :
Codice: Seleziona tutto
Set OggCol2 = OggCol(0).getElementsByTagName("div")    ' Qui posso dedurre che sia una parte della Pagina Html
Set OggCol3 = OggCol(0).getElementsByTagName("img")   ' Questa ricade solo sull'immagine desiderata

    For i = 0 To OggCol2.Length
        Range("A5").Offset(i, 0) = OggCol2(i).innerText         ' Qui si desidera solo estrapolare il solo testo che in questo caso e il link per ogni immagine

        Range("A5").Offset(i, 1) = Replace(OggCol3(i).getAttribute("src"), "//", "", , , vbTextCompare)  ' E questa porzione di codice non la conosco proprio
    Next i
   
Foglio1.Range("A:A").WrapText = False  ' E per finire a che cosa serve il codice ( WrapText ) Quale è il suo scopo?


Grazie per tutte le delucidazioni che vorrai darmi in merito Saluti Sinceri da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Anthony47 » 15/03/19 01:11

E come dicono a Roma ( Sei er meio der meio )
Mi risulta che non sei romano, e si vede :D :D

Se imposti Option Explicit allora e' corretto che ogni variabile deve essere dichiarata prima di essere utilizzata; il codice della Sub Rettangolo1_Click e' un collage di pezzi presi da altre macro e la Dim mi e' sfuggita.

Le dichiarazioni su cui chiedi spiegazione:
-la prima c'era nella macro originale, non la uso e avrei dovuta cancellarla
-le altre tre dichiarano tre "oggetti" che conterranno tre collezioni di informazioni prelevate dal sorgente html della pagina

Quanto alla logica del codice della macro, come detto parte tutto dall'analisi del sorgente html:
Immagine

Si deduce che le icone della risposta sono contenute in un unico "div class="flickity-slider", che al suo interno contiene tanti altri "div" e tanti "img" quante sono le icone.
Raccolta quindi la "collezione" degli oggetti con class="flickity-slider" (che conterra' 1 solo elemento), si estrae da questo elemento la collezione dei tag DIV e la collezione dei tag IMG: il div contiene la didascalia testuale, l' img contiene il riferimento al sorgente dell'immagine attraverso l'attributo "src"

Quanto al WrapText = False, prova ad eliminare completamente quella riga e vedi come ti sara' presentato il riepilogo... WrapText = False invece ti produrra' un output piu' ordinato.
E comunque, come per qualsiasi altra istruzione, ti bastera' posizionare il cursore del mouse sulla parola WrapText e premere F1 per accedere all'help on line del vba, che ti spieghera' in dettaglio il significato e l'uso.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Maury170419 » 15/03/19 11:57

Cia Anthony non avrei voluto disturbarti per cosi poco ; Ma e sorto un altro problema ?
Che e questo : Tu grazie a questo Pessetto di Codice
Codice: Seleziona tutto
   
Range("A5").Offset(i, 1) = Replace(OggCol3(i).getAttribute("src"), "//", "", , , vbTextCompare)  ' E questa porzione di codice non la conosco proprio


Mi fai comparire tutti i linkl delle 15 immagini nella colonna ( B5:B19 ) e fin qui tutto ok

Però visto che io ho sviluppato un programmino niente lame che mi preleva le immagini dai link in questione purché abbiano l'intera estensione cosa che nel tuo caso mi manca che è :
Codice: Seleziona tutto
 https:


Come potrei ovviare a questo inconveniente ; Chiaramente come tu ben sai questo pezzetto di codice va messo all'inizio di ogni link Grazie per tutto l'aiuto che vorrai ancora darmi Sinceri Saluti da A.Maurizio

(P.S) Grazie ancora per la tua spiegazione su come hai eseguito queste Routine , Sono per me sicuramente fonte di inspirazioni future Grazie ancora di tutto
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Anthony47 » 16/03/19 00:24

Se vuoi il link completo di https, allora devi tornare all'istruzione che piu' ti aveva turbato :eeh: e modificarla:
Codice: Seleziona tutto
Range("A5").Offset(i, 1) = Replace(OggCol3(i).getAttribute("src"), "//", "https://", , , vbTextCompare)


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Maury170419 » 16/03/19 18:41

Ciao Anthony47 Grazie infinite Ora si Che e come volevo io sin Dall'inizio
Questo e il Risultato :
[img][img]https://i.postimg.cc/fSxkQ5ht/Immagini-Previsioni-Meteo-Finite-2.png[/img][/img]
Non ho Parole Per Esprimere Tutta la mia Contentezza Nella Realizzazione di Questo Progetto Sinceri Saluti e Buon Fine Settimana.
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Anthony47 » 17/03/19 15:58

Visto quale e' il risultato che vuoi ottenere, potrebbe essere utile sostituire la riga Range("A5").Offset(i, 0) = OggCol2(i).innerText con:code]Range("A22").Offset(0, i) = OggCol2(i).innerText[/code]
In questo modo ti troverai la didascalia sotto le icone, invece che in A5:A19.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Maury170419 » 17/03/19 19:00

Grazie Anthony47 Sei Sempre Fantastico e molto gentile.
Ma con questa piccola Routine , Sono anche Riuscito a Risolvere Il Problema Delle Dimensioni Delle Shapers e Questo e il Risultato :
[img][img]https://i.postimg.cc/kD2qmDZh/Previsioni-Meteo-Direttamente-Dal-Sito-Weater-Meteo.jpg[/img][/img]

Routine :
Codice: Seleziona tutto
For Each Pict In ActiveSheet.Shapes
' Selection.ShapeRange.LockAspectRatio = msoFalse  '<<Vedi Nota **
Pict.Height = 50
Pict.Width = 50
Next Pict


Tu Sapresti Fare Sicuramente Molto Meglio e Di più !
Io mi accontento Di avere un buon maestro come te e tanti altri di questo Forum Grazie
Saluti Sinceri da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Estrarre un Link da una pagina Web legata ad una Immagin

Postdi Maury170419 » 17/03/19 19:47

Ciao Anthony47 Ho apportato l'ultima modifica che mi hai suggerito tu ; E questo e il risultato finale che volevo realizzare sin dall'inizio

[img][img]https://i.postimg.cc/nsZDzrPq/Previsioni-Meteo-Direttamente-Dal-Sito-Weater-Meteo-2.jpg[/img][/img]

Grazie ; Grazie : Grazie Infinite Sinceri Saluti e Buon Inizio Settimana
Con Simpatia ed Amicizia da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05


Torna a Applicazioni Office Windows


Topic correlati a "Estrarre un Link da una pagina Web legata ad una Immagine":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti