SEO-Rec Community Chat 
Gib deinen Benutzernamen ein.

Daten aus Website Auslesen - Titel von Websites auslesen  

  RSS
Patrick Schulze
Mitglied Admin

Hallo Community,

heute möchte ich euch ein Tutorial schreiben welches ich mit Hilfe des Internets und meinem wissen vereint habe.

Es geht um das Szenario:

Du möchtest Daten, in diesem Fall explizit den Titel, von diversen Websites auslesen, weil du Später damit weiter Arbeiten möchtest.
Dies funktioniert mit ein wenig Tricks und ein bisschen RegEx Code.

Quellen:

Voraussetzungen:

  • Microsoft Excel
  • VBA Verweis für RegEx aktiviert (zeige ich dir)
  • Du kannst etwas VBA
  • Du lernst oder kannst RegEx

1. Der Anfang - RegEx Verweis aktivieren

  1. Excel öffnen
  2. Gehe in den Visual Basic Editor (VBA)
  3. Klicke oben auf Extras
  4. Dort dann auf Verweise
  5. Dort suchst du dann nach "Microsoft VBScript Regular Expressions 5.5" das aktivierst du und klickst auf ok.
  6. Nun kannst du RegEx verwenden

2. Die Funktion um HTML auszulesen

Du erstellst ein neues Modul in deinem Editor und fügst den folgenden Code dort ein.

Dieser Code ist nun noch nicht verwendbar.

Private Sub URL_Load(ByVal sURL As String)
Dim appIE As Object
Dim sTxt As String

Set appIE = CreateObject("InternetExplorer.Application")

With appIE
.Navigate (sURL) 'anpassen
.StatusBar = False
.MenuBar = False
.Toolbar = False
.Visible = False
.Resizable = True
.Width = 800
.Height = 600
.Left = 0
.Top = 0
End With

Do: Loop Until appIE.Busy = False
Do: Loop Until appIE.Busy = False
sTxt = appIE.document.DocumentElement.outerHTML
appIE.Quit
Set appIE = Nothing
Close


MsgBox "Der Titel der Website: " & sURL & _
" wurde erfolgreich in die Zelle A3 eingefügt", vbInformation, "Erfolg"
End Sub

Dies ist jetzt ein Private Sub allerdings kannst du gerne daraus auch eine Funktion erstellen, im nächsten step werden wir diese Funktion bzw. den Private Sub aufrufen.
Bedenke das dieser Code noch erweitert wird um später den Titel auszulesen.

In diesem Code Teil, wird der Internet Explorer im Hintergrund geöffnet und der HTML Code der Website ausgelesen. Der HTML Code wird dann in die Variable sTxt geschrieben.

3. Die Funktion aufrufen und per Inputbox URL eintragen

Als nächstes werden wir diese Funktion im Selben Modul aufrufen. Im selben Modul deswegen, weil es das Sub im oberen code Privat ist.

Public Sub myweb()

myWeb_input = InputBox("Geben Sie Ihre URL ein", "URL Eingeben")

Call URL_Load(myWeb_input)

End Sub

Hiermit erstellen wir jetzt im selben Modul eine neue Public Sub, diese greift dann über "Call URL_Load(...)" auf die vorherige Funktion zu.

Über dem eigentlich Aufruf der Funktion, öffnen wir eine InputBox, mit dieser die URL abfrage stattfindet. Die Eingabe aus der InputBox speichern wir in einer Variable. Und diese Variable öffnen wir in unserer Funktionen wieder (Der Teil in den Klammern).
Daraus wird dann unsere Eingabe ausgelesen.

4. Das Auslesen des Titels aus dem HTML - Code

Nun kommen wir zu der Anpassung des Codes aus unserem Private Sub.
Wir werden nun das auslesen mittel RegEx Code vornehmen.

Private Sub URL_Load(ByVal sURL As String)
Dim appIE As Object
Dim sTxt As String

Dim regex As New RegExp, Fundstellen As MatchCollection, Fund As Match
Dim myString As String

Set appIE = CreateObject("InternetExplorer.Application")

With appIE
.Navigate (sURL)
.StatusBar = False
.MenuBar = False
.Toolbar = False
.Visible = False
.Resizable = True
.Width = 800
.Height = 600
.Left = 0
.Top = 0
End With

Do: Loop Until appIE.Busy = False
Do: Loop Until appIE.Busy = False
sTxt = appIE.document.DocumentElement.outerHTML
appIE.Quit
Set appIE = Nothing
Close

Range("A3") = sTxt 'HTML Code der eingetragenen Website wird in Zelle A3 gespeichert.

myString = Range("A3") 'Zelle wird in eine Variable gespeichert

regex.Global = True 'Alle ergebnisse aus dem RegEx code auslesen
regex.Pattern = "(<title>)(.+)(</title>)" 'Es wird nach dem Titel gesucht der im HTML Code steht

Set Fundstellen = regex.Execute(myString) 'Alles was gefunden wurde wird in ein Array geschrieben

For Each Fund In Fundstellen
Range("A3") = Fund.SubMatches(1) 'Der Titel der Website wird in Zelle A3 geschrieben, das vorherige wird überschrieben.
Next

'Es wird eine Erfolgsmeldung ausgegeben
MsgBox "Der Titel der Website: " & sURL & _
" wurde erfolgreich in die Zelle A3 eingefügt", vbInformation, "Erfolg"
End Sub

Im oberen Code wird wie schon erwähnt nun der Titel aus der Website ausgelesen.
Und dann in die Zelle A3 geschrieben, dabei wird der HTML Code, der vorher ausgelesen wurde überschrieben.
Das ist allerdings kein Problem weil der HTML Code vorher schon ausgewertet wurde.

Dadrunter kommt jetzt unsere Public Sub mit dieser man die Website mittels Input Feld eingibt.

5. Der komplette Code

Hier siehst du nun den Kompletten VBA Code der in ein einziges Modul geschrieben wurde, falls du diesen Unterteilen magst geht das Natürlich mit kleinen Anpassungen auch.

Private Sub URL_Load(ByVal sURL As String)
Dim appIE As Object
Dim sTxt As String

Dim regex As New RegExp, Fundstellen As MatchCollection, Fund As Match
Dim myString As String

Set appIE = CreateObject("InternetExplorer.Application")

With appIE
.Navigate (sURL)
.StatusBar = False
.MenuBar = False
.Toolbar = False
.Visible = False
.Resizable = True
.Width = 800
.Height = 600
.Left = 0
.Top = 0
End With

Do: Loop Until appIE.Busy = False
Do: Loop Until appIE.Busy = False
sTxt = appIE.document.DocumentElement.outerHTML
appIE.Quit
Set appIE = Nothing
Close

Range("A3") = sTxt 'HTML Code der eingetragenen Website wird in Zelle A3 gespeichert.

myString = Range("A3") 'Zelle wird in eine Variable gespeichert

regex.Global = True 'Alle ergebnisse aus dem RegEx code auslesen
regex.Pattern = "(<title>)(.+)(</title>)" 'Es wird nach dem Titel gesucht der im HTML Code steht

Set Fundstellen = regex.Execute(myString) 'Alles was gefunden wurde wird in ein Array geschrieben

For Each Fund In Fundstellen
Range("A3") = Fund.SubMatches(1) 'Der Titel der Website wird in Zelle A3 geschrieben, das vorherige wird überschrieben.
Next

'Es wird eine Erfolgsmeldung ausgegeben
MsgBox "Der Titel der Website: " & sURL & _
" wurde erfolgreich in die Zelle A3 eingefügt", vbInformation, "Erfolg"
End Sub

Public Sub myweb()

myWeb_input = InputBox("Geben Sie Ihre URL ein", "URL Eingeben") 'InputBox für die Eingabe der Website

Call URL_Load(myWeb_input) 'Aufrufen der Funktionen aus dem Private Sub

End Sub

Wenn du nun diesen VBA Code 1 zu 1  kopierst und in dein Modul einfügst hast du einen Funktionierenden Code.
Dieser fragt dich nun nach der Website die du Auslesen möchtest nach der Eingabe wirst du nun den Website Titel in der Zelle A3 finden.

Ich habe alles getestet der VBA Code funktioniert, jedoch fehlen hier sämtliche Prüfungen:

  • Ist die Eingabe leer?
  • Ist die Website ggf. gesperrt oder man hat so keinen Zugriff darauf
  • Formatierungen fehlen ebenso

Nun kannst du dir einen CommandButton in deine Tabelle einrichten und diesem das Makro myweb zuweisen, nachdem du drauf klickst kommt deine InputBox.

Du kannst diesen VBA Code sehr gerne anpassen wie du es möchtest.
Ich freue mich über dein Feedback.

Gerne kannst du der Community auch hier deine Anpassungen hochladen.

Falls ich einen Fehler habe, lasst es mich gerne wissen.

Grüße
Patrick

PS: Anbei erhälst du meine Datei mit CommandButton

Gründer und Administrator von Seo-Rec.net

Bei Fragen oder Problemen könnt Ihr mich gerne anschreiben im Community Chat oder per E-Mail.

Meine Firmen Website: https://webster-it.de
Viel Spaß bei SEO-Rec!

Zitat
Veröffentlicht : 29/12/2019 10:49 pm
Norman
Mitglieder Admin

Ginge es Theoretisch das ganze auch per Chrome oder FF umzusetzen oder muss es zwingend der IE im Hintergrund sein?

Mit freundlichen Grüßen
Norman

https://www.tippis.net

AntwortZitat
Veröffentlicht : 11/01/2020 10:02 am
Patrick Schulze
Mitglied Admin

@unique

Genau das selbe habe ich mich auch schon gefragt.
Leider geht hier nur der IE (In der einfachen Version) 

Ja es gibt auch Möglichkeiten für den Chrome aber die sind recht komplizierter wie ich finde und habe Sie deswegen noch nicht getestet.

Gründer und Administrator von Seo-Rec.net

Bei Fragen oder Problemen könnt Ihr mich gerne anschreiben im Community Chat oder per E-Mail.

Meine Firmen Website: https://webster-it.de
Viel Spaß bei SEO-Rec!

AntwortZitat
Veröffentlicht : 13/01/2020 4:15 pm
Menü schließen
Zur Werkzeugleiste springen

Bitte Anmelden oder Registrieren