Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel als Website-Parser möglich?

Forumthread: Excel als Website-Parser möglich?

Excel als Website-Parser möglich?
14.09.2022 09:45:33
Patrick
Hallo ihr Lieben,
ich bin gestern auf eine (hoffentlich) richtig gute Idee gekommen, um weitere Routinearbeiten, die vom Team auch mal gerne vergessen wird, zu automatisieren.
Ich bin gestern über Scraping gestolpert und schon ging die Spinnerei im Kopf los.
Konstruierte theoretische Aufgabe:
Öffne den Browser (IE? (Annahme: da Microsoft mit Microsoft besser kommunizieren kann)),
Surfe zu Google und suche nach dem Suchbegriff "kostenlose Darlehen": https://www.google.com/search?q=kostenlose+Darlehen
Jetzt wirft Google die Ergebnissen aus und schreibt:

Ungefähr 2.950.000 Ergebnisse (0,44 Sekunden)
Die Anzahl an Ergebnisse möchte ich nun in eine Excel-Tabelle übernehmen.
Idee/Ansatz:
Im Quelltext des HTML-Dokumentes würde ich die Zahl hier finden können
(ich musste die Klammern leider durch { und } ersetzen, da sonst der kopierte HTML-Code von der Forumssoftware "interpretiert wird):

{div id="result-stats"}Ungefähr 2.950.000 Ergebnisse{nobr} (0,44 Sekunden) {/nobr}{/div}
Der Original-Code hier als Image: https://prnt.sc/ko8O2LNbRsxi
Kann ich Excel nun dazu bringen, den Quelltext des HTML-Dokumentes zu durchsuchen (Link wäre ja nun: view-source:https://www.google.com/search?q=kostenlose+Darlehen, um das Quellcode-Dokument zu erhalten) und die (Zeichen-)Position des Ausdrucks "
Ungefähr " zu suchen, damit ich die Zahl auslesen kann?
Hat sowas schon mal jemand gemacht und Erfahrung mit einem Excel-Website-Parser?
LG
Patrick
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel als Website-Parser möglich?
14.09.2022 11:01:45
Daniel
Hi
schau dir mal die Funktion XMLFILTERN an.
die ist dafür gemacht, aus Webseiten über die Tags markierte Werte herauszusuchen.
Gruß Daniel
AW: Excel als Website-Parser möglich?
14.09.2022 15:26:51
Yal
Hallo Patrick,
schaue dir
https://www.wiseowl.co.uk/vba-macros/videos/vba-scrape-websites/web-scraping-selenium-chrome/ (57.2)
und die Punkten 57.1, 57.3 usw.
Es wird zuerst mit Chrome erklärt, aber IE, Edge und Co funktionieren genauso. MS-Browser ist in dem Fall nicht relevant.
Wenn Du 365 Business hast, hast Du vielleicht auch Power Automate Desktop. Siehe https://www.youtube.com/watch?v=DgBZiBIgh3w
Excel hat nur 1.048.576 Zeilen. Also 2,9 mio werden nicht gehen :-)
VG
Yal
Anzeige
AW: Excel als Website-Parser möglich?
27.09.2022 11:30:28
Patrick
Hallo Yal,
sorry, komme erst jetzt wieder dazu, mich mit meinem Projekt zu beschäftigen.
Danke für die Quellen... die helfen.
LG
Patrick
AW: Excel als Website-Parser möglich?
14.09.2022 18:20:41
Zwenn
Hallo Patrick,
Google kann im IE gar nicht mehr aufgerufen werden. Der Aufruf wird direkt auf den Edge Browser umgeleitet. Einfach Mal manuell ausprobieren. Insgesamt ist der IE nicht mehr zu gebrauchen. MS hat ihn im Juni 2022 endgültig eingestellt und "bekämpft" ihn aktiv. Viele Webseiten werden inzwischen nach Edge umgeleitet. Edge selbst kann aber aus VBA heraus nicht angesprochen werden. Es gibt jedoch andere Möglichkeiten, wie z.B. xhr (XML HTTP Request).
Leider lässt sich der ganze Bereich Web Scraping nicht in zwei Sätzen abhandeln, sondern ist mit seinen Möglichkeiten und vor allem Problemen, ein sehr weites Feld. Aber es gibt so einige Leute, die diese Disziplin durchaus unter Excel betreiben. Wahrscheinlich sind wir alle samt extrem masochistisch veranlagt ;-)
Mit xhr kann die Anzahl der Suchtreffer als ganzer Satz (weiter ist der in HTML nicht unterteilt) mit dem unten stehenden Code abgerufen werden. Wenn nur die Zahl benötigt wird, müssen weitere String-Operationen angewendet werden, die aber nix mit Web Scraping zu tun haben. (Split() wäre vermutlich eine einfache Möglichkeit.) Ich gebe den Code an, weil er eine Möglichkeit ist, die mir persönlich liegt. Selbst komme ich zwar für meine Belange mit meinem Formelwissen klar, aber die von Daniel genannte kenne ich nicht einmal vom Namen her.
Du solltest Dir die Formel aber unbedingt ansehen, denn mit Formeln sind so einfache Sachen oft viel leichter abzuhandeln.
Noch ein Hinweis zu Google selbst:
Solltest Du vor haben mehr als 35 solcher Anfragen "am Stück" zu machen, hast Du ein Problem. Denn bei einer schnellen Abfolge von Abfragen (Automatisierung), schaltet Google ab Abfrage 36 Captchas. Das bedeutet, mit Automatisierung ist dann nur mit Tricks weiterzukommen. Inzwischen wehren sich so einige Webseitenbetreiber gegen automatisierte Zugriffe.

Sub GoogleAnzahlSuchtreffer()
Const urlBase As String = "https://www.google.com/search?q="
Dim urlSearch As String
Dim doc As Object
Set doc = CreateObject("htmlFile")
With CreateObject("MSXML2.XMLHTTP.6.0")
urlSearch = "kostenlose+Darlehen"
.Open "GET", urlBase & urlSearch, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0"
.send
If .Status = 200 Then
doc.body.innerHTML = .responsetext
MsgBox doc.getElementByID("result-stats").innertext
Else
MsgBox "Seite konnte nicht geladen werden." & Chr(13) & _
"HTTP Status: " & .Status & Chr(13) & _
"Status Text: " & .StatusText
End If
End With
End Sub
Viele Grüße,
Zwenn
PS: Dass die Anzahl der ausgewiesenen Suchtreffer insgesamt eher mit Vorsicht zu genießen ist weißt Du, nehme ich an. Ansonsten, einfach Mal auf Seite 10 oder 15 gucken, ob die Angezeigten Links im gewünschten Kontext noch viel mit dem gesuchten Thema zu tun haben. Die Treffer werden recht schnell unscharf.
Anzeige
Selenium
14.09.2022 20:32:59
Yal
wie Zwenn es sagt, bin ich wohl gerade, da ich mich viel mit Selenium beschäftige...
der VBA-Selenium Code für dein Anliegen würde ungefähr so aussehen:

Sub Start()
Dim ED As New Selenium.EdgeDriver
Const cLinks = "https://www.google.com/search?q=kostenlose+Darlehen"
ED.Start
ED.Get cLinks
ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2) = Array(cLinks, ED.FindElementById("result-stats").Text)
Set ED = Nothing
End Sub
Scheint ziemlich kompakt und Sexy zu sein. Es ist aber eine Menge Turn-Übungen, bis man diese Ergebnis zusammenbringt. Aber gut, wer nichts wagt, der gewinnt auch nichts.
VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige

Infobox / Tutorial

Excel als Website-Parser nutzen


Schritt-für-Schritt-Anleitung

Um Excel als Website-Parser zu nutzen, kannst Du verschiedene Methoden einsetzen, wie z.B. VBA oder Power Automate. Hier ist eine Schritt-für-Schritt-Anleitung, um Daten von einer Webseite mit VBA zu extrahieren:

  1. Öffne Excel und gehe zu den Entwicklertools. Aktiviere das VBA-Entwicklerfenster (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub GoogleAnzahlSuchtreffer()
       Const urlBase As String = "https://www.google.com/search?q="
       Dim urlSearch As String
       Dim doc As Object
       Set doc = CreateObject("htmlFile")
       With CreateObject("MSXML2.XMLHTTP.6.0")
           urlSearch = "kostenlose+Darlehen"
           .Open "GET", urlBase & urlSearch, False
           .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0"
           .send
           If .Status = 200 Then
               doc.body.innerHTML = .responsetext
               MsgBox doc.getElementByID("result-stats").innertext
           Else
               MsgBox "Seite konnte nicht geladen werden." & Chr(13) & _
               "HTTP Status: " & .Status & Chr(13) & _
               "Status Text: " & .StatusText
           End If
       End With
    End Sub
  4. Führe das Makro aus (F5), um die Anzahl der Suchtreffer zu erhalten.

Diese Methode nutzt VBA für das Web Scraping und funktioniert gut mit dem Microsoft Edge Browser, um die Ergebnisse zu extrahieren.


Häufige Fehler und Lösungen

  1. Fehler: "Seite konnte nicht geladen werden."

    • Lösung: Überprüfe die Internetverbindung und stelle sicher, dass die URL korrekt ist.
  2. Fehler: Keine Ergebnisse angezeigt.

    • Lösung: Achte darauf, dass der Element-ID "result-stats" korrekt ist. Google kann seine HTML-Struktur ändern.
  3. Fehler: Automatisierung wird blockiert (Captcha).

    • Lösung: Reduziere die Anzahl der Anfragen oder setze Zeitverzögerungen im Code ein.

Alternative Methoden

  • Power Automate Desktop: Du kannst auch Power Automate Desktop verwenden, um Daten von Webseiten zu extrahieren. Diese Methode erfordert kein Programmieren und ist benutzerfreundlich. Hierbei kannst Du die Funktion "Website auslesen" nutzen.

  • Selenium mit VBA: Eine weitere Möglichkeit ist, Selenium für die Automatisierung des Edge Browsers zu verwenden. Hier ist ein Beispielcode:

    Sub Start()
       Dim ED As New Selenium.EdgeDriver
       Const cLinks = "https://www.google.com/search?q=kostenlose+Darlehen"
       ED.Start
       ED.Get cLinks
       ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2) = Array(cLinks, ED.FindElementById("result-stats").Text)
       Set ED = Nothing
    End Sub

Praktische Beispiele

  • Beispiel 1: Suche nach "kostenlose Darlehen" und extrahiere die Anzahl der Ergebnisse.

  • Beispiel 2: Verwende Power Automate Desktop, um regelmäßig Daten von einer Webseite zu extrahieren und in Excel zu speichern.


Tipps für Profis

  • Nutze .setRequestHeader in VBA, um den User-Agent zu ändern und sicherzustellen, dass Deine Anfragen nicht blockiert werden.
  • Achte darauf, die Automatisierung von Anfragen an Google zu begrenzen, um Captchas zu vermeiden.
  • Experimentiere mit verschiedenen HTML-Parser-Bibliotheken, um komplexe Datenstrukturen besser zu verarbeiten.

FAQ: Häufige Fragen

1. Kann ich Excel auch ohne VBA für Web Scraping nutzen? Ja, Du kannst Power Automate Desktop verwenden, um Daten ohne Programmierung zu extrahieren.

2. Funktioniert das Web Scraping auch mit anderen Browsern? Ja, es funktioniert auch mit anderen Browsern, jedoch sind die Implementierungen unterschiedlich.

3. Wie gehe ich mit Captchas um? Reduziere die Anzahl der Anfragen oder verwende Techniken, um die Anfragen zu verlangsamen.

4. Wo finde ich mehr Informationen über VBA Web Scraping? Es gibt zahlreiche Online-Ressourcen und Tutorials, die sich auf Excel VBA Web Scraping konzentrieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige