IE>excel : extraire un prix (variable) sur une page web.

pascalito

XLDnaute Nouveau
Bonjour à tous en ce jour princier :)

Malgré mes recherches, je n'arrive pas à solutionner le problème suivant :

Je voudrais récupérer un prix sur une page web dont voici le code source.

<span class="price" id="rate_2482">97,00 €</span>

Ce prix pouvant être variable de la dizaine à la centaine, comment faire pour récupérer le prix situé entre >< ??

Cette page contenant plusieurs prix, je pensais que la macro devait identifier dans la page "rate_2482" et récupérer l'info située X caractère plus loin.

Je vous remercie par avance pour votre aide précieuse car je séche complétement.

Bien à vous
 

patricktoulon

XLDnaute Barbatruc
bonsoir
1734477705528.png

voila ce que donne ton lien avec IE
tu risque pas d'avoir grand chose

et voila ce que ca donne sur firefox
1734477812384.png

je ne vais pas essayer sur chrome je pense que c'est bon là c'est mort
 

jurassic pork

XLDnaute Occasionnel
je ne vais pas essayer sur chrome je pense que c'est bon là c'est mort
Hello patrick,
en fait le site bloque les connexions qui viennent de France : en passant par mon VPN connecté par un serveur à Montréal, j'accède à la page.
Sinon pour le code ceci aurait du fonctionner :
VB:
Sub testCexcelCoco()
Dim IE As Object, elems As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-8-pi-panneau-de-cloison-seche-ultra-leger/1000686028"
Do While IE.ReadyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop
a = IE.document.body.querySelector("span.hdca-product__description-pricing-price-value").innerText
MsgBox a
End Sub
mais Internet explorer est trop ancien pour le site et la page ne s'affiche pas entièrement et ça bloque alors sur le test Ready_State_Complete. Avec Edge en utilisant CDP, il y a un autre problème, la page est truffée de publicité et de pop-up si bien que le prix ne s'affiche pas si on ne répond pas à toutes les questions. Il faut avoir un bloqueur de pub
PrixPanneaux.png
ub.

Ami calmant, J.P
 
Dernière édition:

cexcelcoco

XLDnaute Nouveau
Hello patrick,
en fait le site bloque les connexions qui viennent de France : en passant par mon VPN connecté par un serveur à Montréal, j'accède à la page.
Sinon pour le code ceci aurait du fonctionner :
VB:
Sub testCexcelCoco()
Dim IE As Object, elems As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-8-pi-panneau-de-cloison-seche-ultra-leger/1000686028"
Do While IE.ReadyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop
a = IE.document.body.querySelector("span.hdca-product__description-pricing-price-value").innerText
MsgBox a
End Sub
mais Internet explorer est trop ancien pour le site et la page ne s'affiche pas entièrement et ça bloque alors sur le test Ready_State_Complete. Avec Edge en utilisant CDP, il y a un autre problème, la page est truffée de publicité et de pop-up si bien que le prix ne s'affiche pas si on ne répond pas à toutes les questions. Il faut avoir un bloqueur de pubRegarde la pièce jointe 1209333ub.

Ami calmant, J.P
 

cexcelcoco

XLDnaute Nouveau
Salut Jurassic et Patrick

J'ai essayé ton code, est effectivement ça bloque avec internet explorer qui n'affiche pas tout. Existe-t-il un code pour Edge ?

j'ai aussi essayé ce code
VB:
Sub HomeDepot()

code = htmlCodePage("https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-10-pi-panneau-de-cloison-seche-ultra-leger/1000115026")
code = regexExtract(code, "<span class="hdca-product__description-pricing-price-value">(\d+) $</span>")(0)
MsgBox code

End Sub

Mais dans le code source pour la formule regexExtract, il y a déjà des guillemets en plus des miens pour ma formule.

Boîte de dialogue:
Erreur de compilation:
Attendu : séparateur de liste ou )

j'ai modifié pour :
Code:
Sub HomeDepot2()

    code = htmlCodePage("https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-10-pi-panneau-de-cloison-seche-ultra-leger/1000115026")

    code = regexExtract(code, "<span class=""hdca-product__description-pricing-price-value"">(\d+) $</span>")

    Dim web As String
    web = """hdca-product__description-pricing-price-value"""
    Debug.Print web & " "

    MsgBox code

End Sub

Le code fonctionne cette fois, mais je n'obtient pas ma réponse dans le msgbox (elle apparait vide)

sinon, que puis-je faire pour envoyer la réponse dans la cellule A1 par exemple ?

La réponse que je cherche est (\d+) qui remplace le prix actuelle sur le site web

capture
 

jurassic pork

XLDnaute Occasionnel
Hello,
Fais un point d'arrêt sur le deuxième code = et regarde ce qu'il y a dans la variable code . Normalement tu ne peux pas accéder à la page par autre chose qu'un navigateur et tu devrais avoir un Acces denied dans la réponse.
moi ça ne passe pas avec ce code :
VB:
Public Sub GetContents()
    Dim XMLReq As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    XMLReq.Open "Get", "https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-10-pi-panneau-de-cloison-seche-ultra-leger/1000115026"
    XMLReq.send
    HTMLDoc.body.innerHTML = XMLReq.responseText
   msgBox  XMLReq.responseText
End Sub
Ami calmant, J.P
 

Discussions similaires

Statistiques des forums

Discussions
315 057
Messages
2 115 795
Membres
112 542
dernier inscrit
J-c2417