Webbrowser - récupérer id à partir itemprop

Résolu
TonyLucky - 7 mars 2016 à 17:05
 TonyLucky - 8 mars 2016 à 09:52
Bonjour à tous,

EXCEL VBA XP
J'ai mis un Webbrowser dans un UF qui me permet d'accéder à un site pré-défini (chapitre.com). A partir de mon formulaire, je peux chercher un livre précis, aller sur la page de ce livre et récupérer les infos qui m'intéressent (Editeur, résumé, photo,...)
Dans la plupart des cas, j'arrive à récupérer la bonne info. Par contre, les pages "détail du livre" sont organisées différemment en fonction du contenu.
L'id de la date de parution peut changer. J'ai rusé en en paramétrant deux, mais il peut y en avoir plus, idem pour l'éditeur.
J'ai cependant identifié dans le code source une zone identique : it emprop. Mais je ne sais pas comment récupérer l'info de cet it emprop, ni comment récupérer l'id correspondant dans mon code. Et j'avoue que mes recherches sur internet ont été infructueuses (ou mal faîtes...)
Il y a peut-être d'autres solutions. J'avais fait, par exemple, une requête web excel, qui me permettait de récupérer en pavé toutes les infos, de les copier sur une page temporaire et d'extraire les données. Mais cela augmentait mon temps de traitement.
J'apprécierai toute aide ou suggestion.

En pièce jointe, mon fichier test.
http://www.cjoint.com/c/FChpUp5mWmb

Je détaille mon problème, avec des exemples de code, en page Accueil de mon fichier.

Merci par avance de votre temps

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 mars 2016 à 17:48
Bonjour,
Je pense que tu ferais mieux d'exposer ICI problème et code concernés.
Car (tu sembles ne pas en être conscient ) rares sont ceux qui acceptent de télécharger et ouvrir un classeur .xls. Cela est répété ici fréquemment :
- un tel fichier peut être porteur de "bébètes" à ton insu
- un tel fichier peut avoir été également "sain" au départ (au upload) et l'être moins à l'arrivée (au download)
- certains sites de dépôt ont par ailleurs de surcroît acquis une "certaine réputation"
0
Merci d'avoir pris le temps de regarder ma question. Voici les précisions de code. Ma demande n'a pas bougé. Voici le code que j'utilise dans le webbrowser pour récupérer l'info "date de parution

'date parution
Set HtmlElementStandard_2 = OwebDOC.all("ctl00_PHCenter_productBottom_productDetail_rpDetails_ctl03_rpLinks_ctl00_ltValue")
    If HtmlElementStandard_2 Is Nothing Then
    Set HtmlElementStandard_2 = OwebDOC.all("ctl00_PHCenter_productBottom_productDetail_rpDetails_ctl04_rpLinks_ctl00_ltValue") 'date parution
    TexteExtrait_2 = HtmlElementStandard_2.innerText
    ElseIf HtmlElementStandard_2 Is Nothing Then
    TexteExtrait_2 = vbNullString
    Else
    TexteExtrait_2 = HtmlElementStandard_2.innerText
    End If


Maintenant, l'id pouvant changer d'une page sur l'autre, j'ai cherché un point commun, qui semble être itemprop =datePublished

Voici deux exemples de page html
http://www.chapitre.com/CHAPITRE/fr/BOOK/diwo-jean/la-caleche,36519409.aspx
(L 542)
<li>
                <span id="ctl00_PHCenter_productBottom_productDetail_rpDetails_ctl03_ltLabel">Date de parution :</span>
                <meta itemprop="datePublished" content="2010-11-05" />
                <span class="productDetails-items-content" >                                         
                            
                            <span id="ctl00_PHCenter_productBottom_productDetail_rpDetails_ctl03_rpLinks_ctl00_ltValue">05/11/2010</span>
                        
                </span></li>
        
            <li>


http://www.chapitre.com/CHAPITRE/fr/BOOK/maillet-raymonde-piat-colette/le-matelot-des-fleuves,10233169.aspx
(L 429)
li>
                <span id="ctl00_PHCenter_productBottom_productDetail_rpDetails_ctl02_ltLabel">Date de parution :</span>
                <meta itemprop="datePublished" content="1995-01-01" />
                <span class="productDetails-items-content" >
                    
                            
                            
                            <span id="ctl00_PHCenter_productBottom_productDetail_rpDetails_ctl02_rpLinks_ctl00_ltValue">1995</span>
                        
                </span></li>
        
            <li>


Ma question :
Comment puis-je trouver l'itemprop "DatePublished" et comment, à partir de là, puis-je récupérer soit l'id ou l'innertext ?
En espérant que mon énoncé soit clair.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
Modifié par cs_MPi le 7/03/2016 à 20:39
Bonjour,

Tu pourrais essayer ainsi

    Dim Texte, Texte2
Set Texte = OwebDOC.getElementsByTagName("meta")

For Each Texte2 In Texte
If InStr(1, Texte2.outerHTML, "datePublished") > 0 Then
MsgBox Texte2.Content
End If
Next


MPi²
0
Bonjour,

Merci pour votre réponse simple qui fonctionne parfaitement.
Si je comprends bien, je peux utiliser GetElementByTagName pour span, div, meta,... Je l'avais essayé avec itemprop, mais cela ne fonctionnait pas.

J'ai pu aussi adapter ce code pour la recherche de l'éditeur, qui ne se présente pas de la même façon.

Encore merci et bonne journée,
Tony

PS : c'est la 1ière fois que je poste sur ce site et bien qu'ayant coché 'recevoir les réponses par mail', je ne les reçois pas et je ne peux passer la question en 'Résolu'. Si vous pouviez le faire, je vous en serais reconnaissant.
0
Rejoignez-nous