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

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
 

Dranreb

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

Bonjour.
En VBA
VB:
Dim Z as String
Z = "<span class=""price"" id=""rate_2482"">97,00 €</span>"
Msgbox Split(Split(Z, ">")(1), "<")(0)
devrait afficher "97,00 €"
Cordialement.
 

Softmama

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

Bonjour,
En cochant les références:
Microsoft HTML Object Library
Microsoft Internet Conrols

Tu commences par
Set IE=New Internet Explorer
IE.NAvigate "http://Note l'url"
Do while IE.readystate <> READYSTATE_COMPLETE or IE.BusyoEvents:Loop

Ensuite, le plus simple, si tu peux localiser le prix là dedans (et l'extraire avec une macro) :
msgbox IE.Document.Body.InnerText

ou sinon en utilisant les tags, si tu les connais:
CollectionHTML = IE.Document.getElementsByTagName("Nom du tag : rate_2482??")
et faire une recherche là dedans

Si tout cela est flou, il faudrait au minimum fournir l'url du site ou tu cherches cette somme, de sorte à ce que je puisse mieux t'aiguiller.
 

JNP

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

Bonjour le fil ,
Si je ne m'abuse, span class me fait beaucoup penser à du XML, donc il faudrait parser le fichier ...
Sinon, le Split proposé par Dranreb devrait fonctionner, mais, si le prix est en gras, il est possible qu'une balise <b> arrive avant le prix, ce qui faussera le Split ...
Sur la base d'une importation dans une feuille Excel
Code:
Sub test()
Dim C As Range
Const Réf As String = "rate_2482"
Dim Match, Matches
Set C = Cells.Find(Réf, lookat:=xlPart)
If Not C Is Nothing Then
With CreateObject("vbscript.regexp")
    .Global = True
    .Pattern = "[0-9,]* €"
    MsgBox .Execute(C)(0)
End With
End If
End Sub
devrait ramener le prix quelquesoit le cas de figure !
Bonne journée
 

pascalito

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

Merci à tous pour votre participation.

Je ne connaissais pas la fonction split et c'est apparemment efficace.

Cependant, dans la solution fournie par Dranreb, c'est nous qui indiquons le contenu de la variable.
Ce que je voudrais savoir faire c'est comment faire en sorte que la macro trouve "rate_2482" (que l'on trouve une seule fois dans le code source) et affecte à la variable le texte correspondant pour ensuite appliquer la fonction split par exemple...

Hormis s'il y a un moyen plus simple.

merci encore d'avance pour votre participation.
Bien à vous
 

Dranreb

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

Si le texte à analyser est dans un string S
P = Instr(S, "rate_2482") rend la position dans S de "rate_2482"
et Mid$(S, P) rend la fin de S commençant à P qui peut être utilisée à la place du Z donné dans mon exemple.
 

Softmama

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

Hum,tjs pas de réponse à ma remarque, mais essaie ceci... Ca recherche rate_2482 dans le Code source de ta page HTML ET NON DANS UNE FEUILLE EXCEL !

Mais je répète qu'il serait tellement plus simple pour tester ce code de connaitre l'url ! Pque là, je l'ai écrit de tête et en brut, ce qui fait que ne l'ayant pas testé, il est pas garanti que tout fonctionne.

Code:
Sub test()
Set IE=New Internet Explorer
IE.NAvigate "http://..." 'Mettre l'URL à la place des ...
Do while IE.readystate <> READYSTATE_COMPLETE or IE.Busy: doEvents:loop
Msgbox mid(IE.Document.body.innerHTML,instr( IE.Document.body.innerHTML, "rate_2482")+10)
end Sub
 
Dernière édition:

JNP

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

Re , Euh, as-tu testé mon code ? Si ton code source est dans une feuille, il t'affiche le résultat. Il te suffit de remplacer MsgBox par ta variable
Code:
    TaVariable = .Execute(C)(0)
pour récupérer le résultat ...
Bonne soirée
 

pascalito

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

Bon je vais essayé de répondre un peu à tout le monde.

Tout d'abord JNP. Je ne sais pas si j'ai bien interpreté votre macro mais j'ai l'impression qu'il faudrait dans un premier temps que je charge le code source dans une feuille excel. Isn't it ? Car j'ai bien inclus votre code dans ma macro mais l'execution passe dessus sans s'y attarder.
Or c'est une recherche une page web. J'ai bien essayé de bidouiller quelque chose en essayant de remplacer cells.find par un IE.find par exemple mais...échec.
Softmama. Ne vous inquiètez pas car sans avoir l'url (qui correspondrait en fait à un troisième page d'un site internet après avoir passé le mot de passe, identifiant etc...) votre code fonctionne hormis qu'il me donne le prix....et le restant du code source.
Je vais essayé de bidouiller ce bout de code pour obtenir...le grall.
Dranreb je n'ai pas encore testé votre précision concernant votre code.

Je vous tiens au courant si je parviens à mon objectif.

Bien à vous.
 

Softmama

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

Re,

Ha donc ok. Tu dois pouvoir t'en sortir ainsi alors:
VB:
Sub test()
Set IE=New Internet Explorer
IE.NAvigate "http://..." 'Mettre l'URL à la place des ...
Do while IE.readystate <> READYSTATE_COMPLETE or IE.Busy: doEvents:loop
A= mid(IE.Document.body.innerHTML,instr( IE.Document.body.innerHTML, "rate_2482")+10)
A= Mid(A, 1, instr(A,"€<"))
Msgbox A
end Sub
 

pascalito

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

Eh ben voilà vous avez été plus rapide que moi.
Softmama, je suis impressionné car j'aurais mis un temps fou pour obtenir ce résultat.
Il faudra néanmoins que je planche sur le fonctionnement de tout cela car hormis le résultat, je suis intéressé par la compréhension pour extrapoler à d'autres situations.

Je vous remercie pour votre participation à ce post et j'espère qu'il servira à d'autre internautes.

bonne soirée.
 

cexcelcoco

XLDnaute Nouveau
Bonjour,

Je suis rendu à plusieurs forum et encore à la recherche du succès de mon code !
La ligne du code source de ma page web est
<span class="hdca-product__description-pricing-price-value">15,36 $</span>

Sub test()
Set IE=New Internet Explorer
IE.navigate "https://www.homedepot.ca/produit/cg...nneau-de-cloison-seche-ultra-leger/1000686028"
Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop
a = Mid(IE.document.body.innerHTML, InStr(IE.document.body.innerHTML, "hdca-product__description-pricing-price-value") + 10)
a = Mid(a, 1, InStr(a, "$<"))
MsgBox a

End Sub

Le code fourni par Softmama ne fonctionne pas pour une erreur de syntaxe à la deuxième ligne (set IE...)
Je suis toujours sans succès

Si quelqu'un d'entre vous sort du passé de 13 ans hahah
 

cexcelcoco

XLDnaute Nouveau
Bonjour,

Je suis rendu à plusieurs forum et encore à la recherche du succès de mon code !
La ligne du code source de ma page web est
<span class="hdca-product__description-pricing-price-value">15,36 $</span>

Code:
Sub test()
Set IE=New Internet Explorer
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 = Mid(IE.document.body.innerHTML, InStr(IE.document.body.innerHTML, "hdca-product__description-pricing-price-value") + 10)
a = Mid(a, 1, InStr(a, "$<"))
MsgBox a

End Sub

Le code fourni par Softmama ne fonctionne pas pour une erreur de syntaxe à la deuxième ligne (set IE...)
Je suis toujours sans succès

Si quelqu'un d'entre vous sort du passé de 13 ans hahah
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Information au cas où il s'agirait de ça :
La bibliothèque SHDocVw, référence "Microsoft Internet Controls" correspondant au fichier ieframe.dll définit une classe InternetExplorer, en un seul mot.
Ça a des chance d'être ça parce que cet objet est bien muni des propriétes Busy, Document et ReadyState, aini que de la méthode Navigate.
Conseil: Déclarez plutôt au début de la procédure:
VB:
Dim IE As New SHDocVw.InternetExplorer
Vous aurez ainsi des liaisons anticipées aux méthodes et propriétés.
 

cexcelcoco

XLDnaute Nouveau


Merci ! J’essaie ça sous peu et vous revient !
 

Discussions similaires

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