Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Estrarre url contenuti in un sito partendo da link iniziale

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 url contenuti in un sito partendo da link iniziale

Postdi Gattuccio0 » 06/03/21 19:19

Ciao a tutti,
avrei un'esigenza di recuperare, dato un url di partenza, tutti gli url che da esso partono.

Se volessi conoscere tutte le url per sapere quanto sia grande e complesso un sito, quanti prodotti possa avere...per esempio:
se volessi sapere quanti notebook avesse in vendita https://www.eprice.it/ a me interesserebbe avere un risultato di questo tipo:
https://www.eprice.it/pr/computer-portatile (pagina di inizio sezione relativa ai notebook)
https://www.eprice.it/pr/computer-portatile?pp=2
https://www.eprice.it/pr/computer-portatile?pp=3
...
...
https://www.eprice.it/pr/computer-portatile?pp=12
(pagine di catalogo con i prodotti in questo caso si vedono i tasti di avanzamento della pagina corrente, della 2° e 3° e dell'ultima che in questo caso è la 12°)

Quindi vorrei che venissero estratti in automatico tutti per avere un risultato di questo tipo:
https://www.eprice.it/pr/computer-portatile
https://www.eprice.it/pr/computer-portatile?pp=2
https://www.eprice.it/pr/computer-portatile?pp=3
https://www.eprice.it/pr/computer-portatile?pp=4
https://www.eprice.it/pr/computer-portatile?pp=5
https://www.eprice.it/pr/computer-portatile?pp=6
https://www.eprice.it/pr/computer-portatile?pp=7
https://www.eprice.it/pr/computer-portatile?pp=8
https://www.eprice.it/pr/computer-portatile?pp=9
https://www.eprice.it/pr/computer-portatile?pp=10
https://www.eprice.it/pr/computer-portatile?pp=11
https://www.eprice.it/pr/computer-portatile?pp=12

Ho provato a recuperare le sitemap ma hanno solo i link di primo livello.
Come potrei fare?
Gattuccio0
Utente Senior
 
Post: 186
Iscritto il: 22/06/09 12:46

Sponsor
 

Re: Estrarre url contenuti in un sito partendo da link inizi

Postdi Anthony47 » 07/03/21 15:45

La sitemap e' statica e serve solo per indicare agli spider di indicizzazione quali strade esplorare.

Prova questa macro:
Codice: Seleziona tutto
#If VBA7 Then
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Sub CercaEP()
Dim IE As Object
Dim myDoc, AColl As Object, BColl As Object, myItm As Object
Dim iRow As Long, hLink As String, paLim As Long, paNum As Long
'
iRow = 2
paNum = 1
'
Sheets("LISTA").Select                  '<<< Il foglio su cui sara' creato l'elenco
'                                       '    IL FOGLIO SARA' AZZERATO SENZA PREAVVISO
Range("A:A").ClearContents
ActiveSheet.Hyperlinks.Delete
Do
    myUrl = "https://www.eprice.it/pr/" & Range("B1").Value & "?pp=" & paNum          '
    If InStr(1, myUrl, "http", vbTextCompare) = 1 Then
    'Se url valido, Crea una sessione InternetExplorer...
        If IE Is Nothing Then Set IE = CreateObject("InternetExplorer.Application")
        myStart = Timer
        With IE
            .Visible = True         '... rendi visibile IE
            .Navigate myUrl         '...vai all'url
            Sleep 50
            Do While .Busy: DoEvents: Sleep (30): Loop  'Attesa not busy
            Do While .ReadyState <> 4: DoEvents: Sleep (30): Loop 'Attesa documento
        End With
        Sleep (300)
    Set AColl = IE.document.getElementsByClassName("ep_prodListing")
    Debug.Print paNum, AColl.Length
    End If
    If paNum = 1 Then
        On Error Resume Next
        Set AColl = IE.document.getElementsByClassName("ep_Paginator")
        Set BColl = AColl(0).getElementsByTagName("li")
        paLim = CLng(BColl(BColl.Length - 1).innerText)
        On Error GoTo 0
        If paLim = 0 Then Exit Do
    End If
    Set AColl = IE.document.getElementsByClassName("ep_prodListing")
    For I = 0 To AColl.Length - 1
        hLink = AColl(I).href
        If InStr(1, hLink, "https://", vbTextCompare) = 1 Then
            Cells(iRow, "A").Value = hLink
            ActiveSheet.Hyperlinks.Add Anchor:=Cells(iRow, "A"), Address:=Cells(iRow, "A").Value, _
                TextToDisplay:=Cells(iRow, "A").Value
            iRow = iRow + 1
        End If
        hLink = ""
    Next I
    paNum = paNum + 1
If paNum > paLim Then Exit Do
Loop
IE.Quit
Set IE = Nothing
MsgBox ("Completato, " & iRow - 2 & " links")
End Sub

Il codice va copiato in un Modulo standard VUOTO del tuo vba; la riga marcata <<< va compilata secondo il commento.
La famiglia di prodotti da cercare va indicata in B2 (la famiglia deve esistere nel catalogo eprice).

Poi all'occorrenza lanci la Sub CercaEP

Garantisco che questo codice a un certo punto non funzionera' piu' perche' il gestore del sito decidera' di cambiare qualcosa.

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

Re: Estrarre url contenuti in un sito partendo da link inizi

Postdi Gattuccio0 » 08/03/21 18:13

Ciao Anthony grazie per le tue sollecite risposte.

La riga marcata che va compilata secondo il commento, immagino debba avere il nome del Foglio...per cui dovrebbe diventare:
Sheets("Foglio1").Select

Per quanto riguarda la famiglia di prodotti da cercare che va indicata in B2 intendi che devo copiare il collegamento alla pagina di riferimento oppure devo scrivere banalmente il nome della categoria che mi interessa tipo "Informatica o Televisori o Notebook, ecc."?
Gattuccio0
Utente Senior
 
Post: 186
Iscritto il: 22/06/09 12:46

Re: Estrarre url contenuti in un sito partendo da link inizi

Postdi Anthony47 » 08/03/21 20:13

Si, se vuoi creare l'elenco in Foglio1 devi modificare in Sheets("Foglio1").Select

Per la storia delle categorie in B2: l'accesso al sito avviene tramite https://www.eprice.it/pr/CATEGORIA?pp=x
Es https://www.eprice.it/pr/computer-fisso?pp=2
In B2 scriverai la "categoria", non inventandola ma guardando sul sito come i vari prodotti sono catalogati; nel caso in dicussione quindi scriverai "computer-portatile"
Trovi l'elenco delle categorie cliccando sulla riga di menu (in alto) il link "Categorie"

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

Re: Estrarre url contenuti in un sito partendo da link inizi

Postdi Gattuccio0 » 10/03/21 18:11

Grazie molte per i chiarimenti!
Gattuccio0
Utente Senior
 
Post: 186
Iscritto il: 22/06/09 12:46


Torna a Applicazioni Office Windows


Topic correlati a "Estrarre url contenuti in un sito partendo da link iniziale":

Link che non funziona
Autore: danibi60
Forum: Software Windows
Risposte: 2
Sito pc-facile
Autore: gimart
Forum: Discussioni
Risposte: 3

Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti