Analyser HTML en VBA pour en extraire des informations à partir de la description de la liste?

Je veux extraire des informations à partir d'un site web avec Excel XP.

J'ai trouvé un exemple de code (http://www.wiseowl.co.uk/blog/s393/scrape-website-html.htm) et j'ai essayé le suivant:

Function strHtmlElementValue(htmldoc As HTMLDocument, id As String) As String
Dim HtmlElement As IHTMLElement
Set HtmlElement = htmldoc.getElementById(id)
strHtmlElementValue = id & ": " & HtmlElement.innerText
End Function

Je l'ai essayé avec l'URL suivante (chargé comme le htmldoc): http://www.immobilienscout24.de/expose/73940554

Si j'utilise la chaîne "exposez-titre:" pour l'id, la fonction renvoie le titre de la page, ce qui est bien.

Mais comment puis-je accéder à l'e. g. des informations comme le prix?

Dans le code Html, ça ressemble à ça. Il n'y a pas d'ID et si j'essaie d'utiliser le nom de classe "is24qa-kaufpreis" pour getelementbyid, je reçois un message d'erreur.

   <dl>
        <dt>
          <strong class="is24qa-kaufpreis-label">
            Kaufpreis:
          </strong>
        </dt>
        <dd class="is24qa-kaufpreis">
          2.190.000,00 EUR
        </dd>
  </dl>

Alors, est-il un chemin pour accéder aux champs comme ceci "is24qa-kaufpreis" directement et lire le texte interne (dans ce cas, le 2.190.000,00 EUR?

  • Ce que vous voulez est getElementsByClassName - notez que cette fonction retourne une collection d'éléments correspondants, de sorte que vous pouvez faire quelque chose comme: Dim els: Set els = htmldoc.getElementsByClassName("is24qa-kaufpreis") Puis els(0) contiendra le premier match à partir de votre document. Remarque: getElementsByClassName est d'abord apparu dans IE9, donc pas sûr que ce sera disponible sur votre système.
  • Première chose que j'ai essayé était un couple de variations de getElementsByClassName("is24qa-kaufpreis") et ne pouvait pas les amener à travailler (je suis en cours d'exécution IE11). Si vous l'essayez, laissez-moi savoir si cela fonctionne pour vous.