Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Extraction d'information du code source d'une page web avec VBA

ninajams

XLDnaute Junior
Bonjour,

J'essai d'extraire certaine donnée présente dans le code source d'une page web mais je suis complètement bloqué car je ne sais pas quelle méthode utilisé.
Je souhaite extraire des données simple tels que le nom du produit (<h1 itemprop="name">),Le descriptif simple (<h3 style=), la référence fournisseur (<input type="hidden" name="id_product" value="),la disponibilité (<span id="availability_value" class="available">). Ce n'est pas exhaustif.

Après recherche sur internet je me retrouve avec 2 pistes :

1ère piste : Extraire le code source (attention il faut installer un complément de macro du site excel-pratique.com)

VB:
Sub extraction_du_code_source()
   
    Dim L As Worksheet, P As Worksheet, adresse_URL As String
   
        Set L = Worksheets("Liste") 'Je définie mon onglet liste par L
    Set C = Worksheets("code source") 'Je définie mon onglet code source par C
    adresse_URL = L.Cells(2, 1) 'L'adresse URL se trouve dans la feuille L (liste), deuxième ligne, première colonne
   
    codeHtml = htmlCodePage(adresse_URL) 'j'affecte ma variable adresse URL
   
    Sheets("code source").Activate 'J'active la feuille ou je veux les données
   
    codeHtml = Split(codeHtml, Chr(10)) 'Division par ligne de code
    For i = 0 To UBound(codeHtml)
        Cells(i + 1, 1) = codeHtml(i)

Cette solution me permet d'obtenir le code source de la page web indiqué et avoir chaque ligne de code présent sur une ligne. (résultat vous avez votre code source sur 5-6000 lignes excel. C'est plutôt un bon résultat dans la mesure ou je ne recherche que des données qui ne sont présente qu'une seule fois dans le code source. Sauf pour le descriptif simple lorsque j'ai plusieurs lignes de descriptif mais je pense que cela reste gérable.

2ème piste: Voici un code qui permet d'identifier si une adresse URL est valide. Je m'en sers dans une boucle pour nettoyer mon site web des références qui ne sont plus commercialisé par mon fournisseur. Je me demande si il est possible de l'adapter pour aller piocher des informations dans le code source d'une page web.


VB:
Public Function URLexiste(URLaVerifier As String) As Boolean
'par Excel-Malin.com ( https://excel-malin.com )

On Error GoTo Erreur

Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")

oXHTTP.Open "HEAD", URLaVerifier, False
oXHTTP.Send

URLexiste = (oXHTTP.Status = 200)

Exit Function

Erreur:
URLexiste = False
End Function
Sub VerificationAdresseURL()
'par Excel-Malin.com ( https://excel-malin.com )

Dim URLTest As String
URLTest = "https://excel-malin.com/a-propos/"

If URLexiste(URLTest) = True Then
    MsgBox "Cette adresse web existe..."
Else
    MsgBox "Cette adresse web n'existe pas ou n'est pas accessible..."
End If
End Sub


Conclusion : Je ne sais pas vers quel piste m'orienter. Je me demande aussi si il existe une façon de faire qui permettrai de piocher les données en tapant un chemin du genre : <head>/<title> = "Concentré Classic Crème de Leche 30ml - CDC
Ci-dessous une portion du code source de la page :
<head>
<meta charset="utf-8" />
<title> Concentré Classic Crème de Leche 30ml - CDC</title>

Merci pour votre aide
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

ninajams
Décidément c'est la journée...
Je t'invite à lire le point 8 de la charte avant d'aller plus loin
(celui qui parle d'extaction, de site web et de CGU)

(et accessoirement cela m'évitera une volée de bois vert )
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ninajams, Staple, Roblochon,

Relisez le chapitre 8 : ... sur des sites interdisant ces pratiques dans leurs CGU sont interdites.

Or Ninajams ne cite aucun site. Il y a des tas de sites où cette pratique est autorisée à des fins personnelles. Heureusement. J'ai un compte Boursorama et j'aspire mes données boursières de façon journalière, et de façon légale.

Donc à priori aucune violation de nos CGU à donner des infos à Ninajams comme personne ne sait de quelles données ni sur quel site il interviendra . Comme par ex :

 

ninajams

XLDnaute Junior
Bonjour,

Je ne veux pas communiquer le nom du site par discrétion. En conclusion j'obtiens de bon résultat avec le 1er code et la fonction trouve. Je peux donc extraire la partie de code qui m'interesse.

Cordialement
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…