Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

URL´s aus HTML Quellcode auslesen

URL´s aus HTML Quellcode auslesen
27.01.2020 09:37:06
Philip
Hallo zusammen,
da mir hier schon einmal äußerst freundlich geholfen wurde, möchte ich ein weiteres Anliegen erfragen.
Ist es mit einem VBA Code möglich URL´s aus einem HTML Quelltext auszulesen und in Excel aufzulisten?
Beispiel:
Gegeben ist folgende Internetseite: https://www.wlw.de/de/firmen/it-outsourcing
Aus dieser Suchanfrage möchte ich alle URL´s der Unternehmen (ein Mal) auflisten.
Am besten wäre es noch, wenn die jeweilige Info-Adresse der Unternehmen neben den Internetadressen steht. Die E-Mail Adressen werden jedoch erst beim Klick auf die Suchvorschläge angezeigt.
Ist so etwas machbar?
Mit freundlichen Grüßen
Philip

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 10:01:26
volti
Hallo Philip,
hier mal so ohne große Web-Site-Analyse aus der hohlen Hand (ggf. noch unoptimiert):
Schau mal, ob das so hinkommen kann....
Sub WebSpy()
 Dim oIE As Object, oTag As Object
 Dim WSh As Worksheet
 Dim sArr() As String, sTags() As Variant, sUrl As String, T As String, sText As String
 Dim i As Long, iSpalte As Long, iAnzZl As Long, iAnzSp As Long, iAnzTags As Long
 Dim iNr As Integer, iTag As Long
 Dim sMerker As String
 
 sUrl = "https://www.wlw.de/de/firmen/it-outsourcing"
 Set WSh = ThisWorkbook.Sheets("Tabelle1")
 WSh.Select
 WSh.Cells.ClearContents
 WSh.Range("$A$1").Resize(1, 2).Value = Split("hRef,Text", ",")
 sTags = Array("a")
 Set oIE = CreateObject("InternetExplorer.application")
 oIE.Navigate2 sUrl                                         'Zur Url surfen
 oIE.Visible = True
 While Not oIE.ReadyState = 4: DoEvents: Wend               'Warten bis Seite geladen ist
 For iTag = 0 To UBound(sTags)
  If oIE.document.all.tags(sTags(iTag)).Length > 0 Then
   On Error Resume Next
   iNr = 0
   For Each oTag In oIE.document.all.tags(sTags(iTag))
     If oTag.href <> "" Then
      If InStr(sMerker, oTag.href & ",") = 0 Then
       sMerker = sMerker & oTag.href & ","
       ReDim Preserve sArr(1, i)
       sArr(0, i) = oTag.href
       sArr(1, i) = oTag.innerText
       i = i + 1: iNr = iNr + 1
      End If
     End If
   Next oTag
  End If
 Next iTag
 WSh.Cells(2, 1).Resize(i, 2).Value = Application.Transpose(sArr())
 oIE.Quit
 Set oIE = Nothing
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 12:07:52
volti
Hallo Philip,
hier noch mal auf die Firmeneinträge reduziert. Angabe der Url und dem Title-Text, der den Firmennamen enthält.
Die Adresse liegt jeweils im li-Tag davor. Zwar kann man die li-Tags auch einfach abholen, aber der Bezug zur Firma ist damit noch nicht gegeben. Ist also schwierig.
Für weitere Einträge müsste in einer Schleife per Click weitergeschaltet werden. Das ist dann doch etwas Aufwand.
Sub WebSpy_Urls_Auflisten()
 Dim oIE As Object, oTag As Object
 Dim WSh As Worksheet
 Dim sArr() As String, sUrl As String
 Dim sTags() As Variant
 Dim i As Long, iTag As Long
 
 sUrl = "https://www.wlw.de/de/firmen/it-outsourcing"  'Web-Site-Url ggf. anpassen
 Set WSh = ThisWorkbook.Sheets("Tabelle1")             'Ausgabeblatt ggf. anpassen
 WSh.Select
 WSh.Cells.ClearContents
 WSh.Range("$A$1").Resize(1, 2).Value _
     = Split("Url,Firma", ",")                         'überschriften ggf. anpassen
 sTags = Array("a")                                    'Gewünschte Tags ggf. anpassen
 Set oIE = CreateObject("InternetExplorer.application")
 oIE.Navigate2 sUrl                                    'Zur Url surfen
 oIE.Visible = False                                   'offen oder versteckt arbeiten
 While Not oIE.ReadyState = 4: DoEvents: Wend          'Warten bis Seite geladen ist
 For iTag = 0 To UBound(sTags)                         'Alle gewünschten Tags ermitteln
  If oIE.document.all.tags(sTags(iTag)).Length > 0 Then
   On Error Resume Next
   For Each oTag In oIE.document.all.tags(sTags(iTag))
     If oTag.outerText Like "Webseite" Then
       ReDim Preserve sArr(1, i)
       sArr(0, i) = oTag.href
       sArr(1, i) = oTag.Title
       i = i + 1
     End If
   Next oTag
  End If
 Next iTag
'Daten ausgeben
 WSh.Cells(2, 1).Resize(i, 2).Value = Application.Transpose(sArr())
 oIE.Quit
 Set oIE = Nothing
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 14:37:00
Philip
Hallo Karl-Heinz,
das funktioniert außergewöhnlich gut.
Gibt es zudem noch die Möglichkeit eine weitere Spalte zu entwerfen, in der die E-Mail Adresse zum jeweiligen Unternehmen ausgelesen wird?
Beispiel:
Die E-Mail Adresse des ersten Treffers wird beim Aufrufen dieses angezeigt:
https://www.wlw.de/de/firma/monkeywork-ug-haftungsbeschraenkt-1866493-b
Vielen Dank für die bisherige Arbeit!
Mit freundlichen Grüßen
Philip
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 15:33:22
volti
Hallo Philip,
eine spannende und knifflige Sache :-)
Mit dieser Version ist es mir gelungen, eMail-Adresse, Titel (Firma) und die Adresse für alle 12 Seiten auszulesen. Allerdings dauert das dann ein wenig, weil die Angaben in verschiedenen Tags stehen und teilweise durch Unterschleifen gesucht werden müssen. Falls die jetzt gezeigten eMail-Adressen nicht die richtigen sind => ich schau noch mal danach. Man muss halt erst einmal die Web-Site verstehen, was da überhaupt zu sehen und zu machen ist.
Sub WebSpy_Urls_Auflisten()
 Dim oIE As Object, oTag As Object, oTagLi As Object
 Dim WSh As Worksheet
 Dim sArr() As String, sUrl As String, sOrt As String
 Dim sTags() As Variant
 Dim i As Long, j As Long, iTag As Long, iSite As Long
 
 Set WSh = ThisWorkbook.Sheets("Tabelle1")             'Ausgabeblatt ggf. anpassen
 WSh.Select
 WSh.Cells.ClearContents
 WSh.Range("$A$1").Resize(1, 3).Value _
     = Split("Url,Firma,Adresse", ",")                 'überschriften ggf. anpassen
 sTags = Array("a")                                    'Gewünschte Tags ggf. anpassen
 Set oIE = CreateObject("InternetExplorer.application")
 For iSite = 1 To 12
  Application.StatusBar = "Seite " & iSite & " wird bearbeitet...."
  sUrl = "https://www.wlw.de/de/firmen/it-outsourcing?page=" & iSite
  oIE.Navigate2 sUrl                                    'Zur Url surfen
  oIE.Visible = False                                   'offen oder versteckt arbeiten
  While Not oIE.ReadyState = 4: DoEvents: Wend          'Warten bis Seite geladen ist
  For iTag = 0 To UBound(sTags)                         'Alle gewünschten Tags ermitteln
   With oIE.document.all
    If .tags(sTags(iTag)).Length > 0 Then
     On Error Resume Next
     For Each oTag In .tags(sTags(iTag))
      If oTag.outerText Like "Webseite" Then
        ReDim Preserve sArr(2, i)
        sArr(0, i) = oTag.href
        sArr(1, i) = oTag.Title
        sOrt = ""
        For Each oTagLi In .tags("li")
          If oTagLi.innerText <> "" Then
           If oTag.href Like "*" & oTagLi.innerText & "*" Then _
              sArr(2, i) = sOrt: Exit For
           sOrt = oTagLi.innerText
          End If
        Next oTagLi
        i = i + 1
      End If
     Next oTag
    End If
   End With
  Next iTag
 Next iSite
'Daten ausgeben
 WSh.Cells(2, 1).Resize(i, 3).Value = Application.Transpose(sArr())
 oIE.Quit
 Set oIE = Nothing
 MsgBox "fertig"
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 16:47:11
volti
Hallo Philip,
hier das Endprodukt mit Link, Web-Site-Url, Firma und Adresse für alle 12 Seiten in einer Exceltabelle. Das sind 620 Unternehmen, die Du in der u.a. Datei findest, wie auch den aktualisierten Code dazu.
https://www.herber.de/bbs/user/134762.xlsb
viele Grüße
Karl-Heinz
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 20:00:48
Zwenn
Hallo Karl-Heinz,
Dein Code funktioniert und liefert auch das, was Philip auslesen möchte. Er ist aber suboptimal, wie man so sagt. Ich habe den Eindruck, dass Du das Thema Auslesen von Daten aus dem Internet durchaus interessant findest. Nun bin ich sicher kein Super-Crack und ich will auch nicht "den Oberlehrer" geben. Aber ich beschäftige mich schon länger mit diesem Thema.
Deshalb meine Frage:
Ist es für Dich ok, wenn ich nochmal zum Urschleim der Seite zurückkehre und in einen systematischeren Ansatz erkläre, wie ich das angehen würde?
Viele Grüße,
Zwenn
Anzeige
AW: URL´s aus HTML Quellcode auslesen
27.01.2020 23:10:50
volti
Hallo Zwenn,
gerne darfst Du aus meiner Sicht Deinen Ansatz zur Lösung des Problems hier präsentieren, denn da schätzt Du mich schon richtig ein, dass mich dieses Thema interessiert.
Mir war auch schon bewusst, dass das nicht die optimale Lösung ist, mit der Zwischenschleife usw..
Wäre es mein Projekt, würde ich auch länger daran rumschrauben, aber hier im Forum kann man ja nicht ewig an der Präsentation sitzen.
Ich betreibe das hier seit meinem Austritt aus dem Berufsleben auch nur noch hobbymäßig, will mich aber trotzdem fit halten und dazu lernen.
Fast alle anderen Programmiersprachen sind weggebrochen, weil ich ja keine Cubes, Datenbanken und Businessanwendungen mehr habe.
Und das Auslesen von Web-Sites habe ich in den letzten 36 Jahren nur selten gebraucht :-)
Also nur zu, ich freue mich.
viele Grüße
Karl-Heinz
Anzeige
AW: URL´s aus HTML Quellcode auslesen
28.01.2020 08:42:13
Philip
Hallo Karl-Heinz,
es ist wirklich beeindruckend was über VBA so möglich ist. Noch beeindruckender ist die Hilfsbereitschaft in solchen Sachen. Vielen Dank für die Mühe!
Die Datei ist super.
Die Adresse mit PLZ ist auch eine nette Sache. Jedoch wäre die E-Mail Adresse wichtig.
Beim Beispiel "Monkeywork" (https://www.wlw.de/de/firma/monkeywork-ug-haftungsbeschraenkt-1866493-b) wäre das "michael.sailler@monkeywork.de".
Geht auch das?
Mit freundlich Grüßen
Philip
AW: URL´s aus HTML Quellcode auslesen
28.01.2020 09:50:36
volti
Hallo Philip,
grundsätzlich geht ja viel und dieses würde m.E. auch gehen.
Aber wenn ich das richtig sehe, sind die eMail-Adressen nicht in den abgeholten Seiten enthalten. Da müsste man schon in jede der 620 Seiten einzeln gehen (so zusagen als Unterprogramm) und dort die eMail-Adressen extrahieren. Das bedeutet einen deutlichen, zusätzlichen Aufwand an Code, von der benötigten Abholzeit mal ganz abgesehen.
Ich kann mir das ja mal noch mal ansehen (heute ist aber wenig Zeit), versprechen kann ich aber nichts.
In meinem Berufsleben habe ich mich immer gefragt: Wird das jetzt einmalig gebraucht oder jeden Tag/Woche immer wieder und danach Aufwand und Nutzen abgewägt.
Vielleicht hat ja Zwenn noch 'ne Superidee dazu.
viele Grüße
Karl-Heinz
Anzeige
AW: URL´s aus HTML Quellcode auslesen
28.01.2020 10:30:57
Zwenn
Hallo zusammen,
stimmt was Du zur Laufzeit sagst Karl-Heinz. Ich schau mir das heute Abend mal an und nehme das mit in meine Lösung auf.
Auch der Gedanke einmalig oder mehrfach ist ein guter und wichtiger Punkt. Am Ende steht ja immer die Frage ... Wie aufwändig gestaltet man das Ganze? Unterm Strich ist Philips Anforderung aber eher überschaubar, soweit ich bisher gesehen habe.
Viele Grüße,
Zwenn
AW: URL´s aus HTML Quellcode auslesen
28.01.2020 13:11:46
Philip
Hallo zusammen,
ich kann mich nur nochmal bedanken für eure Bemühungen und Hilfsbereitschaft.
Wenn die Code-Erweiterung den Rahmen nicht sprengen würde, wäre ich euch dankbar.
Die Anwendung wird öfter benötigt, jedoch nicht regelmäßig.
Wenn es etwas Rechenzeit in Anspruch nimmt, wäre demnach in Ordnung.
Mit freundlichen Grüßen
Philip
Anzeige
AW: URL´s aus HTML Quellcode auslesen
28.01.2020 22:26:16
volti
Hallo Philip,
ich habe mir noch mal ein völlig neues Konzept einfallen lassen, das jetzt für alle 652 Firmen die gewünschten Daten abholt.
Auch ich selbst habe einiges dazugelernt. :-)
In ca. 10 Minuten werden die Daten abgeholt. Probiere es einfach mal aus und kontrolliere das Ergebnis. Ich habe es aber auch nur 1 mal durchlaufen lassen.
https://www.herber.de/bbs/user/134804.xlsb
Option Explicit
Option COMPARE TEXT
Sub WebSpy_Urls_Auflisten()
 Dim oIE As Object, oTag As Object, oTagLi As Object
 Dim WSh As Worksheet
 Dim sArr() As String, sUrl As String, T As String
 Dim sTags() As Variant
 Dim i As Long, iTag As Long, iSite As Long
 
 Set WSh = ThisWorkbook.Sheets("Tabelle1")             'Ausgabeblatt ggf. anpassen
 WSh.Select
 WSh.Cells.ClearContents
 WSh.Range("$A$1").Resize(1, 6).Value _
     = Split("Link,Url,Firma,Adresse,Kontakt,Telefon", ",") 'überschriften ggf. anpassen
 sTags = Array("a")                                    'Gewünschte Tags ggf. anpassen
 Set oIE = CreateObject("InternetExplorer.application")
 For iSite = 1 To 12
  Application.StatusBar = "Seite " & iSite & " wird bearbeitet...."
  sUrl = "https://www.wlw.de/de/firmen/it-outsourcing?page=" & iSite
  oIE.Navigate2 sUrl                                    'Zur Url surfen
  oIE.Visible = False                                   'offen oder versteckt arbeiten
  While Not oIE.ReadyState = 4: DoEvents: Wend          'Warten bis Seite geladen ist
   With oIE.document.all
    On Error Resume Next
    For Each oTag In .tags("a")
     If oTag.classname = "btn btn-primary" Then
       ReDim Preserve sArr(5, i)
       sArr(0, i) = oTag.href
       i = i + 1
     End If
    Next oTag
   End With
 Next iSite
'Jetzt Details holen
 For i = 0 To i - 1
   oIE.Navigate2 sArr(0, i)                              'Zur Url surfen
   While Not oIE.ReadyState = 4: DoEvents: Wend          'Warten bis Seite geladen ist
   sArr(3, i) = oIE.document.getElementById("business-card__address").outertext
   With oIE.document
     sArr(1, i) = Trim$(.getElementById( _
      "location-and-contact__website").outertext)
     Application.StatusBar = "Seite " & sArr(1, i) & " wird bearbeitet...."
     sArr(2, i) = Trim$(.getelementsbytagname("H1")(0).outertext)
     sArr(3, i) = Trim$(.getElementById( _
      "business-card__address").outertext)
     sArr(4, i) = Trim$(Mid$(.getElementById( _
      "links__email").outertext, 15))
     sArr(5, i) = Trim$(Mid$(.getElementById( _
      "buttons__phone").outertext, 31))
   End With
 Next i
'Daten ausgeben
 WSh.Cells(2, 1).Resize(i, 6).Value = Application.Transpose(sArr())
 oIE.Quit
 Set oIE = Nothing
 MsgBox "Bin fertig!", vbInformation, "Web-Daten abholen"
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: URL´s aus HTML Quellcode auslesen
29.01.2020 06:23:16
Philip
Hallo Karl-Heinz,
besten Dank!
Es funktioniert tadellos und ist genau nach meinen Vorstellungen.
Super Arbeit. Darf man fragen wie lange es als Profi dauert so einen Code zu zaubern?
Mit freundlichen Grüßen
Philip
AW: URL´s aus HTML Quellcode auslesen
29.01.2020 08:26:54
volti
Moin Philip,
danke für Deine Rückmeldung.
Da ich nicht "gelernter" IT-Profi bin, kann es schon mal länger dauern. Manche Aufgaben schreibe ich sicher fließend in ein paar Minuten. Aber hier z.B. habe ich keine große Erfahrung gehabt und ein Großteil der Zeit floss auch in die Analyse der Web-Site. Das war dann schon >1 Stunde.
Einen schönen Arbeitstag wünsche ich
Karl-Heinz
Anzeige
AW: URL´s aus HTML Quellcode auslesen
29.01.2020 10:14:42
Philip
Hallo nochmal,
Mir ist aufgefallen, dass manche Firmen nicht gefunden werden.
Beispiel:
Bei dieser Suchanfrage "https://www.wlw.de/de/firmen/cnc-zerspanung?page=1" taucht diese Firma auf "https://www.wlw.de/de/firma/bilstein-group-engineering-1710516-b". Bei der Auswertung überspringt er jedoch ab dieser Firma viele Weitere.
Kann man das "einfach" beheben?
Mit freundlichen Grüßen
Philip
AW: URL´s aus HTML Quellcode auslesen
29.01.2020 12:36:23
volti
Hi Philip,
bis ich erst mal gemerkt habe, dass Du ja jetzt ganz was anderes abholen willst... :-)
https://www.wlw.de/de/firmen/cnc-zerspanung?page=1
Der Aufruf dieser Web-Site direkt im Browser ergibt 2.238 Firmen und eine vollständig geladene 1. Seite.
Soweit so gut.
Der gleiche Aufruf über das Tool

sUrl = "https://www.wlw.de/de/firmen/cnc-zerspanung?page=1"
oIE.Visible = True 'offen oder versteckt arbeiten
oIE.Navigate sUrl 'Zur Url surfen

ergibt eine unvollständige (ohne Bilder) und nur 30 Firmen und keine Navi-Buttons am Ende der Seite. Im Url-Fenster ist der Eintrag "?page=1" verschwunden.
Ich habe das jetzt mehrfach versucht, mit .navigate statt .navigate2, mit zusätzlichem Warten usw.
Er macht es nicht.
Gibt man im Url-Fenster nachträglich manuell die "?page=1" dazu, tut sich trotzdem nichts. Es bleibt vermurkst.
PS: Es sind jetzt übrigens auch nicht mehr 12 sondern 28 Seiten.
viele Grüße
Karl-Heinz
AW: URL´s aus HTML Quellcode auslesen
29.01.2020 12:46:07
Zwenn
Hallo zusammen,
bin gestern nicht fertig geworden. Zwar habe ich eine Menge Text produziert, allerdings vor allem in Form von Erklärungen zu meinen Gedankengängen. Ich mache heute Abend weiter, kann aber sein, dass es noch länger dauert.
Das Makro ansich lässt sich relativ schnell entwickeln und sollte dann universell für die Seite funktionieren. Also egal was abgefragt wird oder wie viele Seiten da rauskommen. Was dauert ist meine Kommentierung und was die Zeit begrenzt, ist das soziale Umfeld ;-)
Viele Grüße,
Zwenn
AW: URL´s aus HTML Quellcode auslesen
31.01.2020 08:37:45
Philip
Hallo zusammen,
wenn die letzten Änderungen zu viel Zeit in Anspruch nehmen, dann wäre es auch okay das Projekt hie r zu beenden.
Der bisherige Code ist ja auch schon sehr gut und hilft.
Für Optimierungen bin ich natürlich weiterhin dankbar, ansonsten nochmals vielen Dank für die Arbeit.
Mit freundlichen Grüßen
Philip
AW: URL´s aus HTML Quellcode auslesen
31.01.2020 08:53:37
volti
Hallo Philip,
gerne würde ich Dir weiterhelfen, aber es liegt nicht an der Zeit für Änderungen.
(Die sind eigentlich auch gar nicht nötig)
Zumindest bei mir werden jetzt teilweise auch die IT-Unternehmen nicht mehr richtig bzw. anders geladen. Das war anfangs nicht so.
Und zwar aus folgendem Grunde:
Mache ich eine neue Seite auf und gebe den Link ein (auch mit ?page=x), wird M$ Edge aufgemacht und die korrekte Seite geladen.
Über das Tool wird bei mir der IE11 aufgemacht, der jetzt eine abweichend aussehende Seite anzeigt, in der die Bilder fehlen (unrelevant) und anstelle der Seitenauswahl unten einen anderen Button (nächste 30 Firmen) anzeigt usw. Das war erst nicht so.
M$ Edge kann ich nicht steuern, IE11 ist irgendwie nicht komplett, und da hänge ich jetzt und kann es nicht auflösen.
Ich nehme an, dass das bei Dir auch so ist...
Sollte mir noch was einfallen melde ich mich hier noch mal.
Ansonsten wollte ja Zwenn ggf. noch eine Lösung präsentieren.
@Zwenn: Wir warten noch drauf.
viele Grüße
Karl-Heinz
AW: URL´s aus HTML Quellcode auslesen
31.01.2020 15:08:58
Zwenn
Hallo Ihr zwei,
sorry, bin noch nicht dazu gekommen weiterzumachen. Klemme mich heute nochmal dahinter, da aufgrund einer Erkältung das WE bei meiner Freundin ausfällt.
Kurz zum Thema:
Aus VBA heraus lässt sich nur der IE direkt steuern, weil er eine COM Schnittstelle mitbringt, die alle anderen Browser (inklusive Edge) nicht haben.
https://de.wikipedia.org/wiki/Component_Object_Model
Bei mir lässt sich die Seite aber ganz normal im IE öffnen. Das Nachladen der Bilder zu dem Zeitpunkt, wenn sie ins Sichtfeld gescrollt werden, machen andere Seiten auch. Damit spart man sich das runterladen von Daten, die man im Zweifelsfall sowieso nicht braucht. Im Gegensatz zu reinem Text (HTML und Scripte), brauchen auch optimierte Bilder relativ viel Bandbreite.
Versuche mal ob es besser wird, wenn Du den Cache des IE löschst Karl-Heinz.
Viele Grüße,
Zwenn
AW: URL´s aus HTML Quellcode auslesen
31.01.2020 18:04:36
volti
Hallo Philip,
hier doch noch mal eine neue Version, die die Ermittlung der relevanten Firmen jetzt anders, deutlich schneller ermittelt, weil nur noch Text und nicht der ganze andere Kram mitgeladen wird.
Hier wird jedoch nur die Such-Seite vernüftig unterstützt, welche merkwürdigerweise doppelt so viele Firmen ausgibt.
Bei IT-Outsourcing 1.336 statt bisher 652 Firmen. Ich verstehe diese Web-Anwendung irgendwie nicht, naja.
Für die Einzelermittlung wird leider fast eine Sekunde pro Firma zum Extrahieren der Daten benötigt, bei mehr als 6.000 Zerspahnungs-Firmen kommt da schon was zeitmäßig zusammen..
PS: Bei 6.000 Firmen habe ich jetzt abgebrochen..
Entscheide selbst, ob, was und wie Du das jetzt nutzen möchtest. Ich verabschiede mich jetzt von dem sicherlich spannenden Thema.
https://www.herber.de/bbs/user/134882.xlsb
Datei hatte 960 KB, musste ich wieder kürzen.
Option Explicit
Option COMPARE TEXT
Sub Firmen_Aus_Web_Auflisten()
 Dim oIE As Object
 Dim sTeil() As String, sArr() As String, sUrl As String
 Dim i As Long, j As Long, iSite As Long
 
 Set oIE = CreateObject("InternetExplorer.application")
 With CreateObject("MSXML2.XMLHTTP")
  For iSite = 1 To 250                              'Anzahl der Seiten je 30 Firmen
'   sUrl = "https://www.wlw.de/de/suche/it-outsourcing/page/" & iSite
   sUrl = "https://www.wlw.de/de/suche/cnc-zerspanung/page/" & iSite
    .Open "GET", sUrl, False
    .Send
    sTeil = Split(.responsetext, "data-v-7f25727b><a href=" & Chr$(34))
    For i = 1 To UBound(sTeil)
     ReDim Preserve sArr(5, j)
     sArr(0, j) = "https://www.wlw.de" & Left$(sTeil(i), InStr(sTeil(i), Chr$(34)) - 1)
     oIE.Navigate sArr(0, j)                        'Zur Url surfen
     While Not oIE.ReadyState = 4: DoEvents: Wend   'Warten bis Seite geladen ist
     With oIE.document
      On Error Resume Next
      sArr(1, j) = Trim$(.getElementById( _
       "location-and-contact__website").outertext)
      DoEvents
      sArr(2, j) = Trim$(.getelementsbytagname("H1")(0).outertext)
      Application.StatusBar = "Seite " & iSite & ", " _
        & (j + 1) & ". Firma " & sArr(2, j)
      sArr(3, j) = Trim$(.getElementById( _
               "business-card__address").outertext)
      sArr(4, j) = Trim$(Mid$(.getElementById( _
               "links__email").outertext, 15))
      sArr(5, j) = Trim$(Mid$(.getElementById( _
               "buttons__phone").outertext, 31))
     End With
     j = j + 1
    Next i
    If i < 31 Then Exit For
  Next iSite
 End With
'Daten ausgeben
 With ThisWorkbook.Sheets("Tabelle1")               'Ausgabeblatt ggf. anpassen
  .Select
  .Cells.ClearContents
  .Range("$A$1").Resize(1, 6).Value = Split( _
     "Link,Web-Site,Firma,Adresse,Kontakt,Telefon", ",") 'überschriften ggf. anpassen
  .Cells(2, 1).Resize(j, 6).Value = Application.Transpose(sArr())
 End With
 oIE.Quit
 Set oIE = Nothing
 MsgBox "Bin fertig ", vbInformation, "Web-Daten abholen"
End Sub
viele Grüße
Karl-Heinz

AW: URL´s aus HTML Quellcode auslesen
27.01.2020 10:40:53
ChrisL
hi Philip
Hier noch eine Variante...
Sub t()
Dim objXMLHTTP As Object
Dim sUrl As String, sResult As String
Dim regex As Object
Dim strtext As String
Dim m As Object, i As Long
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
sUrl = "https://www.wlw.de/de/firmen/it-outsourcing/"
objXMLHTTP.Open "GET", sUrl, False
objXMLHTTP.Send
strtext = Replace(objXMLHTTP.ResponseText, vbLf, "")
Set regex = CreateObject("vbScript.Regexp")
With regex
.Pattern = "\href=""[^""]+"">Webseite"
.Global = True
Set m = .Execute(strtext)
If m.Count > 0 Then
For i = 0 To m.Count - 1
Cells(i + 1, 1) = Left(Right(m(i), Len(m(i)) - 6), Len(Right(m(i), Len(m(i)) - 6)) - 10)
Next i
End If
End With
Set objXMLHTTP = Nothing
End Sub

cu
Chris

6 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige