VBA Excel - optimiser code recherche info sur internet

Résolu
TonyLucky - 14 mars 2016 à 09:22
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 22 mars 2016 à 16:46
Bonjour à tous,

J'arrive maintenant à extraire les informations que je veux sur une page internet. Je souhaite simplement savoir si mon code peut être optimisé et simplifié.
1) J'utilise getElementsByTagName et une boucle pour extraire un élément. Cependant, à partir du moment où on connaît le "tag" et la 'rubrique' (ex : "publisher"), ne peut-on extraire directement l'info sans passer par une boucle ? Avec par exemple une fonction du style IE.Document.getelementbyclassname("r1").all(1).innertext
2) Dans la ligne de code HTML ci-dessous (pardon pour sa longueur), je n'ai pas trouvé de 'rubrique' permettant d'identifier le résumé du livre. En faisant une boucle, j'ai pu identifier les variables 5, 6 & 7 comme contenant le résumé. J'ai fait quelques tests sur plusieurs titres et cela semble fonctionner quand il y a un résumé. Mais existe-t-il un autre moyen de sortir le résumé seul ?

Ligne de code HTML

</div></section></li></ul></section><div  id="informations"><ul class="tab-nav"><li class="active"><a href="#infos-description" data-toggle="tab">Présentation</a></li><li class=""><a href="#infos-minor" data-toggle="tab">Informations</a></li></ul><div class="tab-content"><div class="tab-pane active" id="infos-description"><p>Comment sont mortes les souveraines les plus célèbres de l'Histoire ? Du suicide de Cléopâtre au dramatique accident d'Astrid de Belgique en passant par la décapitation de Marie Stuart et de Marie-Antoinette, l'assassinat d'Agrippine, de Sissi et d'Alexandra de Russie, ou l'agonie édifiante de Catherine de Médicis, Anne d'Autriche, Catherine II, la reine Victoria ou l'impératrice Eugénie, les meilleurs historiens et écrivains d'histoire racontent leurs derniers jours dans des textes incisifs où la limpidité du récit s'appuie sur des enquêtes puisées aux meilleures sources.<br /><br />Toujours tragiques, souvent brutales, parfois spectaculaires, inattendues ou interminables, leurs fins se ressemblent par une même dignité, une civilité monarchique de l'adieu exaltée par la conscience que ces reines avaient de leur rang, et leur volonté commune d'édifier la postérité après avoir marqué leur temps. Comme si toutes se retrouvaient dans la fière devise de Marie Stuart : « En ma fin est mon commencement. »<br /><br />« Une fresque du pouvoir suprême au féminin, de l'Antiquité au XXe siècle » : c'est ainsi que Jean-Christophe Buisson et Jean Sévillia définissent cet ouvrage collectif de prestige qu'ils ont dirigé et qui fera date, autant par ses qualités littéraires que par le regard innovant qu'il porte sur les ultimes instants de ces femmes dont les règnes ont changé le monde à tout jamais.</p></div><div class="tab-pane " id="infos-minor"><dl class="dl-horizontal"><dt>EAN13</dt><dd>9782262050320</dd><dt>ISBN</dt><dd itemprop="isbn">978-2-262-05032-0</dd><dt>Éditeur</dt><dd itemprop="publisher"><a href="/editeur/perrin/">Perrin</a></dd><dt>Date de publication</dt><dd itemprop="datePublished" datetime="2015-10-01">10/2015</dd><dt>Nombre de pages</dt><dd itemprop="numberOfPages">398</dd><dt>Dimensions</dt><dd>21 x 14 x 3 cm</dd><dt>Poids</dt><dd itemscope itemtype="http://schema.org/Weight">490 g</dd></dl></div></div></div></div></div></div></div><footer><!-- TOP FOOTER --><div id="top-footer"><div class="container"><div class="row"><div class="col-md-4 col-sm-12"><div class="row"><div class="col-md-12 col-sm-6" id="website_shares"><span class="title">Suivez-nous</span><ul class="list-inline"><li><a href="http://fr-fr.facebook.com/pages/leslibrairesfr/201050373329980" class="share facebook" target="_blank"></a></li><li><a href="https://twitter.com/_LesLibraires" class="share twitter" target="_blank"></a></li><li><a href="https://plus.google.com/u/0/102019319207173485300/posts" class="share google-plus" target="_blank"></a></li></ul></div><div class="col-md-12  col-sm-6"><a href="http://www.centrenationaldulivre.fr/"><div>Avec le soutien du</div><img src="//static.leslibraires.fr//logos/misc/cnl.png" alt="Avec le soutien du Centre National du Livre"/><div>www.centrenationaldulivre.fr</div></a></div></div></div><div class="col-md-4 col-sm-12"><span class="title">Newsletter</span><ul id="newsletters"><li class="newsletter"><div class="alert alert-success" style="display: none;"></div><div class="alert alert-warning" style="display: none;"></div><div class="alert alert-danger" style="display: none;"></div><form method="POST" class="inline-form"><input type="hidden" name="newsletter" value="16"/>


Voici le code de ma macro

Sub ImportData()

Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim HtmlElementStandard_1 As HTMLGenericElement
Dim Texte, Texte2 'as object ou variant

Dim Info_1 As String, Info_2 As String, Info_3 As String, Info_4 As String, Info_5 As String, Info_6 As String, Info_7 As String, Info_8 As String, Info_9 As String
Dim i As Byte, ii As Byte
Dim TabloInfos

'Ouvre la page Web
'IE.navigate "https://www.leslibraires.fr/livre/2742763-au-dela-des-larmes--davis-kathryn-lynn" 'aucune info et pas de résumé
'IE.navigate "https://www.leslibraires.fr/livre/8923403-hong-kong-tai-pan-la-noble-maison--clavell-james--presses-de-la-cite-omnibus" 'ni info, ni photo
IE.navigate "https://www.leslibraires.fr/livre/8509779-les-derniers-jours-des-reines-buisson-j-c--perrin" 'toutes les infos
'IE.navigate "https://www.leslibraires.fr/livre/4177324-circassienne-la--guillemette-de-sairigne-points" 'toutes les infos
'IE.navigate "https://www.leslibraires.fr/livre/138276-le-clan-de-l-ours-des-cavernes-volume-1-le-cl--jean-m-auel-presse-de-la-cite"

IE.Visible = False
WaitIE IE
Set IEDoc = IE.document

'titre
Set Texte = IEDoc.getElementsByTagName("span")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "name") > 0 Then Info_1 = Texte2.innerText: Exit For
    Next

'auteur
Set Texte = IEDoc.getElementsByTagName("h2")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "author") > 0 Then Info_2 = Texte2.innerText: Exit For
    Next

'éditeur
Set Texte = IEDoc.getElementsByTagName("dd")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "publisher") > 0 Then Info_3 = Texte2.innerText: Exit For
    Next

'Date parution
Set Texte = IEDoc.getElementsByTagName("dd")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "datePublished") > 0 Then Info_4 = Texte2.innerText: Exit For
    Next

'ISBN
Set Texte = IEDoc.getElementsByTagName("dd")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "isbn") > 0 Then Info_5 = Texte2.innerText: Exit For
    Next

'résumé
Set Texte = IEDoc.all("informations").all(6)
Info_6 = Texte.innerText

'Nbre pages
Set Texte = IEDoc.getElementsByTagName("dd")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "numberOfPages") > 0 Then Info_7 = Texte2.innerText: Exit For
    Next

'Titre pour repère photo
Set Texte = IEDoc.getElementsByTagName("h4")
    For Each Texte2 In Texte
        If InStr(1, Texte2.outerHTML, "modal-title") > 0 Then Info_8 = Texte2.innerText: Exit For
    Next

'Photo couverture
Set Texte = IEDoc.getElementsByTagName("img")
    For Each Texte2 In Texte
       If InStr(1, Texte2.outerHTML, Info_8) > 0 Then Info_9 = Texte2.src: Exit For
    Next

MsgBox "ok"
TabloInfos = Array(Info_1, Info_2, Info_3, Info_4, Info_5, Info_6, Info_7, Info_8, Info_9)

With Sheets("Tempo")
.Range("A50:A60").Clear
ii = 50
    For i = 0 To UBound(TabloInfos)
        .Cells(ii, 1) = TabloInfos(i)
        ii = ii + 1
    Next i
End With

 'Libération des variables
   Set IE = Nothing
   Set IEDoc = Nothing
   IE.Quit

End Sub



Merci par avance pour vos remarques ou suggestions,
Tony

12 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
14 mars 2016 à 10:28
Bonjour,
on peut déjà se demander la raison pour laquelle tu recommences à chaque fois une boucle (par exemple avec "dd"), au lieu de le faire en une seule fois pour extraire tes "infos" en fonction des .outerHTML !
0
Bonsoir,

Merci pour cette remarque. J'y avais pensé mais comme je sors de la boucle dès que l'info est trouvée, je trouvais plus simple de refaire une nouvelle boucle. Mais je vais le faire.
Ce n'est cependant pas le fond de ma question...

Bonne soirée
Tony
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
14 mars 2016 à 23:04
Bonsoir, VBA, c'est pas trop mon rayon, mais je sais que les Regex fonctionnent.

Cela doit être possible en utilisant les groupes (Matches et SubMatches à priori)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 mars 2016 à 05:25
Je ne suis pas sûr d'avoir bien cerné ce que tu veux dire
A tout hasard, donc :
IEDoc.all("informations").all("infos-description").innerText
te retournerait la même chose que
IEDoc.all("informations").all(6).innerText
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour et merci à tous les deux,

Whismeril :
Je n'ai jamais entendu parler de Regex et Matches... J'avais tenté les children, mais sans succès... En fait, il faudrait que je trouve des infos sur les propriétés HTML que je découvre. Comme d'habitude, je m'aperçois que plus j'en sais, moins j'en sais !

Ucfoutu :
C'est exactement ce genre de syntaxe que je cherche, qui devrait me permettre de bypasser les boucles.
Ton exemple marche bien pour le résumé. Par contre, si je remplace "infos-description" par "isbn", pour avoir le code isbn, cela ne marche pas. C'est la le coeur de mon problème : je ne connais pas les propriétés HTML et j'ai du mal à les utiliser. Et je n'arrive pas à trouver un tutoriel qui corresponde à ce besoin - lien vba / html.

Mais bon, on avance à petit pas.

Tony
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
15 mars 2016 à 19:04
Bonsoir,

peux tu poster une page html que tu souhaites traiter, et préciser ce que tu veux extraire.
0
Bonjour,

Voici les infos demandées. Je cherche à savoir si on peut appliquer une autre méthode que la boucle pour extraire des infos et à comprendre les principales propriétés VBA - HTML. J'extrais aujourd'hui des informations de livres mais je pourrais être amené à extraire des infos plus pointues un jour prochain...

Page utilisée :
https://www.leslibraires.fr/livre/4177324-circassienne-la--guillemette-de-sairigne-points

Infos recherchées dans cette page :
Lig HTML - infos cherchées () - variables VBA
16 - Titre (span / name / innertext) - info_1
16 - Auteur (h2 / author / innertext) - info_2
31 - Editeur (dd / publisher / innertext) - info_3
31 - Date Parution (dd / datePublished / innertext) - info_4
31 - ISBN (dd / isbn / innertext) - info_5
31 - Résumé (informations / infos-description / innertext) - info_6
31 - Nbre pages (dd / numberOfPages / innertext) - info_7
13 - Titre pour photo (h4 / modal-title / innertext) - info_8
13 - Photo (img / variable info_8 / src) - info_9

Enfin, voici la page HTML



<!DOCTYPE html><html lang="en"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="utf-8"><title>Livre: Circassienne (La), Guillemette de Sairigné, Points, Points Seuil, 9782757837368 - Leslibraires.fr</title><meta name="author" content="Leslibraires.fr"><meta name=viewport content="width=device-width, initial-scale=1"><link rel="stylesheet" href="//static.leslibraires.fr/CACHE/3b224d61.css"><!--[if lt IE 9]><meta http-equiv="X-UA-Compatible" content="IE=edge"><script src="//static.leslibraires.fr/CACHE/a3d58c95.js"></script><link href="//static.leslibraires.fr/lib/bootstrap/3.0.3/js/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /><link href="/respond.proxy.gif" id="respond-redirect" rel="respond-redirect" /><script src="/respond.proxy.js"></script><![endif]--><meta name="description" content="Découvrez et achetez CIRCASSIENNE (LA) - Guillemette de Sairigné - Points sur www.leslibraires.fr"><meta property="og:type" content="book" /><meta property="og:title" content="CIRCASSIENNE (LA) - Guillemette de Sairigné - Points" /><meta property="og:description" content="Découvrez et achetez CIRCASSIENNE (LA) - Guillemette de Sairigné - Points sur www.leslibraires.fr" /><meta property="og:image" content="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/medium/4/8/3/002536483.jpg" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="CIRCASSIENNE (LA) - Guillemette de Sairigné - Points" /><meta name="twitter:description" content="Découvrez et achetez CIRCASSIENNE (LA) - Guillemette de Sairigné - Points sur www.leslibraires.fr" /><meta name="twitter:image" content="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/medium/4/8/3/002536483.jpg" /></head><body><!--[if lt IE 8]><div class="browserupgrade"><div><p>
        Vous utilisez un navigateur <strong>périmé</strong>.
        Merci de <a href="http://browsehappy.com/" target="_blank">mettre à jour</a> votre navigateur pour améliorer votre expérience sur internet et votre sécurité.
      </p></div></div><![endif]--><nav id="launchbar"><ul><li><a href="//www.leslibraires.fr/le_reseau/"><img src="//static.leslibraires.fr//logos/website/8/header.png" alt="Le réseau" height="24"></a></li></ul><ul class="right"><li><a href="/login/?next=/livre/4177324-circassienne-la--guillemette-de-sairigne-points&website=8" class="ll-outlink">S'identifier</a></li><li><form action="/i18n/setlang/" method="post"><input name="next" type="hidden" value="/livre/4177324-circassienne-la--guillemette-de-sairigne-points" /><input name="language" type="hidden" /><a href="javascript:void(0);"><img src="//static.leslibraires.fr//logos/misc/flags/en.png" alt="English" data-code="en"></a></form></li></ul></nav><header><div class="container"><!-- TOP HEADER --><div class="row"><!-- LOGO --><div id="logo" class="col-md-4 col-sm-6 col-xs-6" itemscope itemtype="http://schema.org/BookStore"><meta itemprop="name" content="Leslibraires.fr"><a href="/"><img src="//static.leslibraires.fr/logos/website/8/main.png"
               alt="www.leslibraires.fr"
               itemprop="logo"></a></div><!-- PRESENTATION --><div class="col-md-3 hidden-sm hidden-xs sticker"><span class="icon-book"></span><div><strong>4 535 982</strong></div><div>Références en stock</div></div><div class="col-md-3 col-sm-6 col-xs-6 sticker"><a href="/le_reseau/"><span class="icon-globe"></span><div>découvrez</div><div><strong>notre réseau</strong></div></a></div><!-- CART --><div class="col-md-2 col-sm-12"><a id="cart" href="/panier/" class="btn btn-first icon icon-cart" rel="nofollow">
          Panier 
        </a></div></div><!-- BOTTOM HEADER - NAVIGATION --><div class="row" id="bottom-header"><nav class="col-md-12"><form id="header-search" action="/recherche/" method="GET" role="search"><input type="text"
                 placeholder="Titre, auteur, éditeur, collection..."
                 value="" name="q"><button type="submit" class="icon icon-search">Rechercher</button><a href="/recherche_avancee/">Recherche avancée</a></form><ul class="website-tabs"><li class="active"><a href="/">Livres</a></li><li class=""><a href="/boutique/26/ebooks-livres-numeriques-electroniques/">Ebooks</a></li><li class=""><a href="/conseils">Conseils de lecture</a></li><li class=""><a href="/dossiers">Dossiers</a></li><li class=""><a href="/rencontres">Rencontres</a></li></ul></nav></div></div></header><!-- MAIN --><div id="main"><div class="container"><div class="row"><div class="col-md-12"><ul><li><ul class="breadcrumb" itemprop="breadcrumb"><li><a href="/rayon/litterature" itemprop="url">Littérature</a></li><li><a href="/rayon/biographies-memoires" itemprop="url">Biographies / Mémoires</a></li></ul></li></ul></div></div><div class="row" itemscope itemtype="http://schema.org/Book"><div class="col-md-4 col-sm-6"><div class="image"><a href="#" data-toggle="modal" data-target="#product-images" rel="nofollow" itemprop="image"><div class="imgwrapper"><img alt="CIRCASSIENNE (LA)" src="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/large/4/8/3/002536483.jpg"></div></a><div class="modal" id="product-images" tabindex="-1" role="dialog" aria-labelledby="ProductImages" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="ProductImages">CIRCASSIENNE (LA)</h4></div><div class="modal-body"><img data-src="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/large/4/8/3/002536483.jpg" alt="CIRCASSIENNE (LA)"></div></div></div></div></div><ul class="tab-nav"><li class="active"><a>Partager</a></li></ul><div class="tab-content"><div class="tab-pane active"><ul class="list-inline social-share"><li><a class="share facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leslibraires.fr%2Flivre%2F4177324-circassienne-la--guillemette-de-sairigne-points&t=%C3%80+voir+absolument" target="_blank" title="Partager sur Facebook" rel="nofollow"></a></li><li><a class="share twitter" href="http://twitter.com/home?status=%C3%80+voir+absolument+sur+www.leslibraires.fr+%3A+CIRCASSIENNE+%28LA%29+-+Guillemette+de+Sairign%C3%A9+-+Points+http%3A%2F%2Fwww.leslibraires.fr%2Flivre%2F4177324-circassienne-la--guillemette-de-sairigne-points" target="_blank" title="Tweeter cette page" rel="nofollow"></a></li><li><a class="share google-plus" href="https://plus.google.com/share?url=http%3A%2F%2Fwww.leslibraires.fr%2Flivre%2F4177324-circassienne-la--guillemette-de-sairigne-points" target="_blank" title="Partager sur Google+" rel="nofollow"></a></li><li><a class="share pinterest" href="http://pinterest.com/pin/create/link/?url=http%3A%2F%2Fwww.leslibraires.fr%2Flivre%2F4177324-circassienne-la--guillemette-de-sairigne-points&description=%C3%80+voir+absolument+www.leslibraires.fr+%3A+CIRCASSIENNE+%28LA%29+-+Guillemette+de+Sairign%C3%A9+-+Points" target="_blank" title="Épingler sur Pinterest" rel="nofollow"></a></li><li><a class="share email" title='Partager par email' href="/article/4177324/share_via_email/" data-toggle="modal" data-target="#share-by-email" rel="nofollow"></a></li><div class="modal" id="share-by-email" tabindex="-1" role="dialog" aria-labelledby="ShareByEmail" aria-hidden="true"></div><li><a class="share flaticon-plussign15" title='Ajouter à la liste de cadeaux' href="/article/4177324/add_to_list/" data-toggle="modal" data-target="#add-to-wishlist" rel="nofollow"></a></li><div class="modal" id="add-to-wishlist" tabindex="-1" role="dialog" aria-labelledby="AddToWishlist" aria-hidden="true"></div></ul></div></div><ul class="tab-nav"><li class="active"><a>Commentaires</a></li></ul><div class="tab-content"><div class="tab-pane active" id="social-reviews" itemscope itemtype="http://schema.org/AggregateRating"><meta itemprop="reviewCount" content="0"/><meta itemprop="ratingValue" content=""/><meta itemprop="worstRating" content="0"/><meta itemprop="bestRating" content="5"/><div><a href="/login/?next=/livre/4177324-circassienne-la--guillemette-de-sairigne-points%23social-reviews&website=8"
             rel="nofollow">S'identifier</a> pour envoyer des commentaires.
          
          <hr></div></div></div></div><div class="col-md-8 col-sm-6"><div class="main-infos"><h1><span itemprop="name">Circassienne (la)</span></h1><h2>De <a href="/personne/guillemette-de-sairigne/84585/" itemprop="author">Guillemette de Sairigné</a></h2><h3><a href="/editeur/points/">Points</a></h3><h4><a href="/editeur/points/collection/points-seuil-/">Points Seuil</a></h4></div><section><div id="div_current_geoloc" style="display: none;">
  Meilleures offres pour  <strong></strong><span style="margin-left: 15px;"><a id="a_change_geoloc" href="#" rel="nofollow">Modifier</a></span></div><div id="div_change_geoloc" style=""><div class="alert alert-success" id="location-coord-wait" style="display: none;">
    Géolocalisation en cours, merci de patienter. Il se peut que votre navigateur vous demande l'autorisation de vous géolocaliser.
  </div><div>Trouvez les offres des librairies les plus proches :</div><div><form id="location-coord-form" class="form-inline" method='GET' action='/external_data/geolocalise_by_coord/'><input type="hidden" name="latitude"><input type="hidden" name="longitude"><input name="next" type='hidden' value="/livre/4177324-circassienne-la--guillemette-de-sairigne-points"><button class="btn btn-emph" type="button"><span class="icon-globe"></span>trouvez moi</button></form>

    ou

    <form id="location-form" class="form-inline" method='GET' action='/external_data/geolocalise/'>
      entrez le nom de votre ville
      <div class="form-group"><input id="location" name="location" type="text" class="typeahead form-control pull-right" placeholder="Ville, Code postal..."></div><input name="next" type='hidden' value="/livre/4177324-circassienne-la--guillemette-de-sairigne-points"></form></div></div><script>
  var LOCATION_AJAX_URL = "/external_data/geolocalisation_autocomplete_ajax/";
</script></section><section id="product-offers"><h3 class="section_title"><span>Offres</span></h3><ul id="offers"><li><div class="offer" itemprop="offers" itemscope itemtype="http://schema.org/Offer"><div itemprop="seller" itemscope itemtype="http://schema.org/Organization">
        Vendu par <strong><span itemprop="name">La Fabrique à Rêves</span></strong></div><div><link itemprop="availability" href="http://schema.org/InStock"><span class="delay short" ></span><a href="/cgv/#dispo">En stock, expédié aujourd'hui</a></div><div class="price-condition"><span class="offer-price"><span class="price">8.30</span></span></div><form action="https://www.leslibraires.fr/add_to_cart/"
        method="POST"><input type="hidden" name="offer_id" value="62572234"/><button class="btn btn-emph icon icon-cart cart-new">Ajouter au panier</button></form></div></li></ul><hr><div><a href="/offres/4177324" class="icon icon-more" rel="nofollow">
                Voir toutes les offres (97) pour ce produit.
              </a></div></section><div  id="informations"><ul class="tab-nav"><li class="active"><a href="#infos-description" data-toggle="tab">Présentation</a></li><li class=""><a href="#infos-minor" data-toggle="tab">Informations</a></li></ul><div class="tab-content"><div class="tab-pane active" id="infos-description"><p>Exilée du Caucase, mannequin chez Chanel, Leïla de Luart fut aussi une héroïne de la Seconde Guerre mondiale et une icône de la Légion étrangère. Pendant la guerre d’Espagne, elle invente et fait financer des ambulances à l'intérieur desquelles, pour la première fois, on pratique la chirurgie lourde en zone de combat. Cette approche nouvelle sauvera des milliers de blessés. Personnalité complexe, libre et transgressive, sa volonté de fer et son courage physique et moral n’eurent d’égal que sa beauté.<br /><br />Guillemette de Sairigné est journaliste et écrivain. Elle a publié notamment Tous les dragons de notre vie et Mon illustre inconnu : enquête sur un père légende.</p></div><div class="tab-pane " id="infos-minor"><dl class="dl-horizontal"><dt>EAN13</dt><dd>9782757837368</dd><dt>ISBN</dt><dd itemprop="isbn">978-2-7578-3736-8</dd><dt>Éditeur</dt><dd itemprop="publisher"><a href="/editeur/points/">Points</a></dd><dt>Date de publication</dt><dd itemprop="datePublished" datetime="2013-11-21">21/11/2013</dd><dt>Collection</dt><dd><a href="/editeur/points/collection/points-seuil-/">POINTS SEUIL</a>
                (P3153)
              </dd><dt>Nombre de pages</dt><dd itemprop="numberOfPages">570</dd><dt>Dimensions</dt><dd>17 x 10 x 2 cm</dd><dt>Poids</dt><dd itemscope itemtype="http://schema.org/Weight">296 g</dd><dt>Code dewey</dt><dd><a href="/dewey/940.53082/">940.53082</a></dd></dl></div></div></div></div></div><div class="row"><section class="col-md-12"><h3>Autres contributions de...</h3><ul class="tab-nav"><li class="active"><a href="#product-contribution-1" data-toggle="tab">Guillemette de Sairigné (Auteur)</a></li></ul><div class="tab-content"><div class="tab-pane active" id="product-contribution-1"><ul class="ppanel ppanel-product"><li itemscope itemtype="http://schema.org/Book"><div class="image"><a href="/livre/1712375-mille-pardons-des-histoires-vecues-guillemette-de-sairigne-le-grand-livre-du-mois"><div class="imgwrapper"><span class="missing missing-book" style="font-size: 80.0px; width: 160px"></span></div></a></div><div class="details"><a href="/livre/1712375-mille-pardons-des-histoires-vecues-guillemette-de-sairigne-le-grand-livre-du-mois" class="name" itemprop="name">
      Mille Pardons, Des Histoires Vécues
    </a><div>Guillemette De Sairigné</div><div>Le Grand Livre Du Mois</div><div class="offer">
      


  <div>
    <span class="delay unknown"></span>
    
    
  </div>

    </div></div></li><li itemscope itemtype="http://schema.org/Book"><div class="image"><a href="/livre/268005-mille-pardons-des-histoires-vecues-une-exig--guillemette-de-sairigne-robert-laffont"><div class="imgwrapper"><img alt="Mille pardons / des histoires vécues : une exigence universelle, des histoires vécues" src="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/medium/1/2/8/000352128.jpg"></div></a></div><div class="details"><a href="/livre/268005-mille-pardons-des-histoires-vecues-une-exig--guillemette-de-sairigne-robert-laffont" class="name" itemprop="name">
      Mille Pardons / Des Histoires Vécues : Une Exigence Universelle, Des Histoires Vécues
    </a><div>Guillemette De Sairigné</div><div>Robert Laffont</div><div class="offer">
      


  <div>
    <span class="delay medium"></span>
    
    
      
        
          
          <span class="price">21.00</span>
        
      
    
  </div>

    </div></div></li><li itemscope itemtype="http://schema.org/Book"><div class="image"><a href="/livre/430519-la-beaute-en-plus-guillemette-de-sairigne-fayard"><div class="imgwrapper"><img alt="La beauté en plus" src="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/medium/7/1/6/000788716.jpg"></div></a></div><div class="details"><a href="/livre/430519-la-beaute-en-plus-guillemette-de-sairigne-fayard" class="name" itemprop="name">
      La Beauté En Plus
    </a><div>Guillemette De Sairigné</div><div>Fayard</div><div class="offer">
      


  <div>
    <span class="delay medium"></span>
    <span class="condition-label">Neuf</span>
    
      
        
          
          <span class="price">28.00</span>
        
      
    
  </div>

  <div>
    <span class="delay short"></span>
    <span class="condition-label">Occasion</span>
    
      
        
          
          <span class="price">4.80</span>
        
      
    
  </div>

    </div></div></li><li itemscope itemtype="http://schema.org/Book"><div class="image"><a href="/livre/1631611-l-espace-d-henry-murail-sculpteur-exposition--bernard-louedin-michel-chamard-guillemette-de--conseil-general-de-la-vendee"><div class="imgwrapper"><span class="missing missing-book" style="font-size: 80.0px; width: 160px"></span></div></a></div><div class="details"><a href="/livre/1631611-l-espace-d-henry-murail-sculpteur-exposition--bernard-louedin-michel-chamard-guillemette-de--conseil-general-de-la-vendee" class="name" itemprop="name">
      L'Espace D'Henry Murail, Sculpteur, [Exposition, La Roche-Sur-Yon], Hôtel Du Département De La Vendée, 24 Mai-14 Juillet 2003
    </a><div>Bernard Louédin, Michel Chamard, Guillemette De Sairigné, Vendée, Conseil Général</div><div>Conseil Général De La Vendée</div><div class="offer">
      


  <div>
    <span class="delay unknown"></span>
    
    
  </div>

    </div></div></li><li itemscope itemtype="http://schema.org/Book"><div class="image"><a href="/livre/1545709-mon-illustre-inconnu-enquete-sur-un-pere-de-le--guillemette-de-sairigne-le-grand-livre-du-mois"><div class="imgwrapper"><span class="missing missing-book" style="font-size: 80.0px; width: 160px"></span></div></a></div><div class="details"><a href="/livre/1545709-mon-illustre-inconnu-enquete-sur-un-pere-de-le--guillemette-de-sairigne-le-grand-livre-du-mois" class="name" itemprop="name">
      Mon Illustre Inconnu, Enquête Sur Un Père De Lé...
    </a><div>Guillemette De Sairigné</div><div>Le Grand Livre Du Mois</div><div class="offer">
      


  <div>
    <span class="delay unknown"></span>
    
    
  </div>

    </div></div></li><li itemscope itemtype="http://schema.org/Book"><div class="image"><a href="/livre/220007-mon-illustre-inconnu-enquete-sur-un-pere-de-le--guillemette-de-sairigne-fayard"><div class="imgwrapper"><img alt="Mon illustre inconnu, enquête sur un père de légende" src="https://ec56229aec51f1baff1d-185c3068e22352c56024573e929788ff.ssl.cf1.rackcdn.com/attachments/medium/7/3/7/001294737.jpg"></div></a></div><div class="details"><a href="/livre/220007-mon-illustre-inconnu-enquete-sur-un-pere-de-le--guillemette-de-sairigne-fayard" class="name" itemprop="name">
      Mon Illustre Inconnu, Enquête Sur Un Père De Légende
    </a><div>Guillemette De Sairigné</div><div>Fayard</div><div class="offer">
      


  <div>
    <span class="delay medium"></span>
    <span class="condition-label">Neuf</span>
    
      
        
          
          <span class="price">22.30</span>
        
      
    
  </div>

  <div>
    <span class="delay short"></span>
    <span class="condition-label">Occasion</span>
    
      
        
          
          <span class="price">22.30</span>
        
      
    
  </div>

    </div></div></li></ul><a href="/personne/guillemette-de-sairigne/84585/" class="icon-more">Plus d'informations sur Guillemette de Sairigné</a></div></div></section></div></div></div><footer><!-- TOP FOOTER --><div id="top-footer"><div class="container"><div class="row"><div class="col-md-4 col-sm-12"><div class="row"><div class="col-md-12 col-sm-6" id="website_shares"><span class="title">Suivez-nous</span><ul class="list-inline"><li><a href="http://fr-fr.facebook.com/pages/leslibrairesfr/201050373329980" class="share facebook" target="_blank"></a></li><li><a href="https://twitter.com/_LesLibraires" class="share twitter" target="_blank"></a></li><li><a href="https://plus.google.com/u/0/102019319207173485300/posts" class="share google-plus" target="_blank"></a></li></ul></div><div class="col-md-12  col-sm-6"><a href="http://www.centrenationaldulivre.fr/"><div>Avec le soutien du</div><img src="//static.leslibraires.fr//logos/misc/cnl.png" alt="Avec le soutien du Centre National du Livre"/><div>www.centrenationaldulivre.fr</div></a></div></div></div><div class="col-md-4 col-sm-12"><span class="title">Newsletter</span><ul id="newsletters"><li class="newsletter"><div class="alert alert-success" style="display: none;"></div><div class="alert alert-warning" style="display: none;"></div><div class="alert alert-danger" style="display: none;"></div><form method="POST" class="inline-form"><input type="hidden" name="newsletter" value="16"/>
      
        « La lettre des libraires »
        <span class="input-group"><input type="email" name="email" class="form-control" placeholder='Adresse email'/><span class="input-group-btn"><button type="submit" class="btn btn-first subscribe">S'inscrire</button></span></span><div><a href="#" class="unsubscribe">Se désinscrire</a></div></form></li></ul></div><div class="col-md-4 hidden-sm hidden-xs"><span class="title">Disponibilités</span><ul><li><span class="delay short"></span>4 535 982 articles en stock envoyés aujourd'hui ou demain</li><li><span class="delay medium"></span>Commandable, envoyé d'ici 4 à 7 jours</li><li><span class="delay unknown"></span>Épuisé, non publié ou non commercialisé</li><li><span class="delay future"></span>À paraître</li></ul></div></div></div></div><!-- BOTTOM FOOTER --><div id="bottom-footer"><div class="container"><div class="row"><div class="col-md-12"><ul><li><a href="/nous_contacter">Nous contacter</a></li><li><a href="//www.leslibraires.fr/le_reseau/">Le réseau  leslibraires.fr</a></li><li><a href="/cgv/">Conditions générales de ventes</a></li></ul></div></div></div></div></footer><script type="text/javascript">
    var STATIC_URL = "//static.leslibraires.fr/";
    var TEMPLATES_DIR = "//static.leslibraires.fr/websites/design_2013_12/";
</script><script src="//static.leslibraires.fr/CACHE/15d6cffd.js"></script><script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-48404906-1', 'www.leslibraires.fr', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink', ['leslibraires.fr']);
ga('send', 'pageview');
</script><script src="//static.leslibraires.fr/CACHE/1e3b69fb.js"></script><script src="//www.google.com/jsapi" type="text/javascript"></script><script>
    var $informations = $("#informations");
    var $navTabs = $informations.find(".tab-nav");
    var $tabContent = $informations.find(".tab-content");

    LLGooglePreview.callback = LLGooglePreview.init($navTabs, $tabContent, 'Feuilleter');
    LLGNUBookPreview.init($navTabs, $tabContent, 'Feuilleter', 9782757837368);
  </script><script src="/books_google_com/books?bibkeys=ISBN:9782757837368&jscmd=viewapi&callback=LLGooglePreview.callback"></script><script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-6678905-2']);
  _gaq.push(['_setDomainName', 'www.leslibraires.fr']);
  _gaq.push(['_trackPageview']);
  _gaq.push(['_setAllowLinker', true]);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script></body></html>


Merci par avance de votre aide
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
16 mars 2016 à 21:11
Bonsoir.

Les expressions régulières (Regex) sont des outils de capture de texte suivant un modèle (pattern).
Habituellement, je code en C# et là j'arrive très bien à extraire le titre du roman.

Voir ici un tuto en VBA

Quand, avec mes outils habituels, je teste ce pattern:
<span itemprop="name">.+</span>

J'ai deux occurrences
<span itemprop="name">Circassienne (la)</span>

<span itemprop="name">La Fabrique à Rêves</span></strong></div><div><link itemprop="availability" href="http://schema.org/InStock"><span class="delay short" ></span><a href="/cgv/#dispo">En stock, expédié aujourd'hui</a></div><div class="price-condition"><span class="offer-price"><span class="price">8.30</span></span>


Il y a moyen d'affiner, mais mon problème est que si je mets le même pattern dans VBA, j'ai 32 occurrences, toutes vides....

Pour l'instant, je sèche

Si tu veux regarder ce que ça donne, copie colle ton html et le pattern ce tester en ligne
http://regexstorm.net/tester

(onglet Table pour voir les occurrences)

Tu peux tester ces patterns aussi

<h1><span itemprop="name">.+</span></h1>

<span itemprop="name">[\w \(\)]+</span>


Aucuns ne marchent sous vba....
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
16 mars 2016 à 21:15
Et surtout avec ce pattern,
<span itemprop="name">([\w \(\)]+)</span>

Regarde le groupe $1 dans la table.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
Modifié par Whismeril le 17/03/2016 à 19:05
Bonsoir,

comme je m'en doutais le problème ne venait pas de la regex, mais bien de mon faible niveau en VBA.... Et sans doute pas les yeux en face des trous hier soir.... Je ne lisais pas le texte comme il fallait.

    Dim oFSO As Scripting.FileSystemObject
    Dim oFl As Scripting.File
    Dim oTxt As Scripting.TextStream
    Dim Texte As String
    
    'Instanciation du FSO
    Set oFSO = New Scripting.FileSystemObject
    Set oFl = oFSO.GetFile("C:\Test\test.html")
    Set oTxt = oFl.OpenAsTextStream(ForReading)

    Texte = oTxt.ReadAll() 'lit le texte en entier
    
    Dim reg As New RegExp
    
    reg.Global = True 'sinon s'arrête à la première occurrence, hier on a vu qu'il y en a 2
    
    Dim patern As String
    patern = "<span itemprop=""name"">([^<]+)</span>"'ici le patern cherche le texte exact <span itemprop=""name"">, suivi de "tout sauf <" répété plusieurs fois et entre parenthèses pour en faire un subMatch, suivi du texte exact </span>
    reg.Pattern = patern'on affecte le pattern
    Set Matches = reg.Execute(Texte)'on exécute la regex sur le texte entier
    For Each Match In Matches 'liste les occurrences
        Debug.Print "source >>", Match.Value
        For i = 0 To Match.SubMatches.Count - 1 'et les submatches
            Debug.Print "[$" & i + 1 & "]", Match.SubMatches(i)
        Next i
    Next Match


Sortie

source >> <span itemprop="name">Circassienne (la)</span>
[$1] Circassienne (la)
source >> <span itemprop="name">La Fabrique à Rêves</span>
[$1] La Fabrique à Rêves


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
Bonjour,

Merci pour ta réponse très complète. Je rentre de déplacement et n'ai pas eu le temps de regarder dans le détail. Je ferai cela lundi et reviendrai vers toi après avoir fait mes tests.
Bon week-end
Tony
0
Bonjour,

J'ai pu tester ta solution. J'avoue que le tutoriel que tu m'as indiqué sur les patterns est très intéressant et m'ouvre des perspectives. Je n'ai pas encore tout compris, mais je vais faire des tests.
J'ai donc peut-être encore un peu de mal à appréhender les bénéfices de ta solution. Pour l'instant, je trouve mes boucles plus simples et plus sûres.
Je vais donc améliorer mes boucles dans un premier temps, puis me pencher sur les expressions rationnelles.
On peut considérer cette question comme résolu.
Encore merci du temps que tu m'as consacré.
Bonne journée,
Tony
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
22 mars 2016 à 16:25
Bonjour,
Il y a un lien "Marquer comme résolu" sous le titre de la discussion.
Comme tu n'es pas connecté, il est possible que tu ne le voies pas, auquel cas il faut demander à la modération via le lien "Signaler"
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
22 mars 2016 à 16:46
Vu ;)
0
Rejoignez-nous