Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Elemente aus html Quellcode auslesen

Elemente aus html Quellcode auslesen
08.04.2015 13:24:00
Michael
Hallo zusammen,
ich öffne noch einmal einen Beitrag, da beim letzten etwas mit der Formatierung nicht funktioniert hat.
Ich muss aus einem Quellcode die URLs auslesen, welche immer nach dem div- Element mit der Class "products-box gridView" kommt. Das Element kommt in der Beispieldatei 30 mal vor, wobei alle URLs untereinander in Excel aufgelistet werden sollen.
Es wäre super wenn es dieses mal klapt, ich freue mich auf eure Antwort. :-)
Michael
Anhang: https://www.herber.de/bbs/user/96935.xlsm

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Elemente aus html Quellcode auslesen
08.04.2015 14:04:44
Oberschlumpf
Hi Michael
teste mal diesen Code (anstelle deiner aktuellen Schleife):

For Each all In IEApp.Document.all
If InStr(all.nodename, "href") > 0 Then
MsgBox all.nodename
End If
Next

Du wirst feststellen, dass keine MsgBox angezeigt wird.
Das könnte daran liegen, weil es keinen Inhalt "href" in all.nodename gibt.
Ich hab keine Ahnung von IE-Referenz, vermute aber, dass du "href" in einem anderen Teil vom IE suchen musst.
Hilfts?
Ciao
Thorsten

Anzeige
Glaube auch, dass das so nichts wird, ...
08.04.2015 14:32:25
Luc:-?
…Michael,
die mit href gekennzeichneten Links stehen wohl alle in a-Tags.
Wieviel Ahnung hast du von XHTML und CSS? Es ist eine mühselige Sache, sich das alles selbst zu erarbeiten. Das mache ich nur, wenn ich muss, denn dieses Gebiet ist sehr komplex…
Übrigens scheint die Firma dieser WebSite mit Klarna zusammenzuarbeiten — die beste Methode, jeden Kunden nur 1× begrüßen zu dürfen (denn die machen ihr eigenes Ding und versuchen gern, extra zu kassieren)…
Gruß, Luc :-?

Anzeige
AW: Elemente aus html Quellcode auslesen
08.04.2015 14:45:39
EtoPHG
Hallo Michael,
Für einen Profi/VBA gut, ein ziemlich dürftiger,fehlerbehafteter Code und zugehörige Beschreibung des Problems!
Ich nehme an, du willst das:
Sub b()
Dim IEApp As Object, allX As Object
Dim zeile As Long
Dim sText As String
zeile = 1
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = False
IEApp.Navigate "http://www.wall-art.de/mustertapeten/" 'anpassen
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Document.ReadyState = "complete"
For Each allX In IEApp.Document.all
If allX.classname = "products-box gridView" And allX.nodename = "DIV" Then
With Tabelle1
sText = Split(Split(allX.outerHTML, "href=""")(1), """")(0)
.Hyperlinks.Add Anchor:=.Cells(zeile, 1), Address:=sText, _
TextToDisplay:=Replace(Mid(sText, 38), ".html", "")
End With
zeile = zeile + 1
End If
Next
IEApp.Quit
Set IEApp = Nothing
MsgBox "Fertig"
End Sub

Gruess Hansueli

Anzeige
AW: Elemente aus html Quellcode auslesen
08.04.2015 15:15:26
Michael
Hallo Hansruedi, Luc und Thorsten,
zuerst einmal recht herzlichen Dank für die Antworten, die Antwort von Hansruedi ist genau das was ich gesucht habe.
Und ja ich bitte um Entschuldigung für die ungenügende Ausarbeitung der Frage. Was die Angaben zu Profi/VBA gut betrifft werde ich meine Qualifikation noch einmal überdenken ;-)
Recht herzlichen Dank und einen angenehmen Nachmittag.
Michael

Anzeige
wer ist hansruedi? owT
08.04.2015 15:25:59
Rudi
;
Anzeige
Anzeige

Infobox / Tutorial

Elemente aus HTML-Quellcode auslesen


Schritt-für-Schritt-Anleitung

Um aus einem HTML-Quellcode die gewünschten Elemente auszulesen, kannst du VBA in Excel nutzen. Hier ist eine Schritt-für-Schritt-Anleitung, um die URLs aus dem Quellcode auszulesen.

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  4. Füge den folgenden VBA-Code ein:

    Sub b()
       Dim IEApp As Object, allX As Object
       Dim zeile As Long
       Dim sText As String
       zeile = 1
       Set IEApp = CreateObject("InternetExplorer.Application")
       IEApp.Visible = False
       IEApp.Navigate "http://www.wall-art.de/mustertapeten/" ' anpassen
       Do: Loop Until IEApp.Busy = False
       Do: Loop Until IEApp.Document.ReadyState = "complete"
       For Each allX In IEApp.Document.all
           If allX.classname = "products-box gridView" And allX.nodename = "DIV" Then
               With Tabelle1
                   sText = Split(Split(allX.outerHTML, "href=""")(1), """")(0)
                   .Hyperlinks.Add Anchor:=.Cells(zeile, 1), Address:=sText, _
                   TextToDisplay:=Replace(Mid(sText, 38), ".html", "")
               End With
               zeile = zeile + 1
           End If
       Next
       IEApp.Quit
       Set IEApp = Nothing
       MsgBox "Fertig"
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle "b" und klicke auf "Ausführen".

Jetzt sollten alle URLs aus dem HTML-Quellcode in deiner Excel-Tabelle aufgelistet sein.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht oder es werden keine Links angezeigt.

    • Lösung: Stelle sicher, dass die Webseite, von der du die Daten auslesen möchtest, korrekt eingegeben ist. Überprüfe auch die Internetverbindung.
  • Fehler: "Object variable or With block variable not set."

    • Lösung: Dies tritt auf, wenn das Internet Explorer-Objekt nicht richtig erstellt wurde. Vergewissere dich, dass die Internet Explorer-Anwendung auf deinem Computer installiert ist.

Alternative Methoden

Wenn du keine VBA-Programmierung nutzen möchtest, kannst du auch Tools wie Power Query in Excel verwenden, um Daten von einer Webseite zu importieren. Hier sind die Schritte:

  1. Gehe zu Daten > Daten abrufen > Aus dem Web.
  2. Gib die URL der Webseite ein, von der du die Daten abrufen möchtest.
  3. Wähle die entsprechenden Tabellen oder Daten aus und lade sie in Excel.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den HTML-Code auslesen und die Daten in Excel einfügen kannst:

Sub BeispielHTMLAuslesen()
    Dim IEApp As Object
    Set IEApp = CreateObject("InternetExplorer.Application")
    IEApp.Visible = True
    IEApp.Navigate "http://www.example.com"

    ' Warte, bis die Seite vollständig geladen ist
    Do While IEApp.Busy Or IEApp.readyState <> 4: DoEvents: Loop

    ' Hier kannst du den Quelltext lesen
    Dim htmlCode As String
    htmlCode = IEApp.Document.body.innerHTML
    Debug.Print htmlCode ' Gibt den HTML-Quelltext in das Direktfenster aus

    IEApp.Quit
    Set IEApp = Nothing
End Sub

Tipps für Profis

  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme besser zu handhaben.
  • Halte deinen VBA-Code sauber und gut kommentiert, um die Wartung zu erleichtern.
  • Teste den Code regelmäßig, um sicherzustellen, dass er mit Änderungen auf der Webseite weiterhin funktioniert.
  • Verwende Debug.Print, um den Quellcode zu lesen und zu verstehen, wie die Struktur der Webseite aufgebaut ist.

FAQ: Häufige Fragen

1. Wie kann ich weitere Elemente aus dem HTML-Quellcode auslesen? Du kannst die Bedingungen in der Schleife anpassen, um andere HTML-Elemente auszulesen, indem du beispielsweise nach class oder id suchst.

2. Funktioniert dieser Code in Excel 2010 und neuer? Ja, der Code sollte in Excel 2010 und neueren Versionen einwandfrei funktionieren, solange du die Internet Explorer-Anwendung installiert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige