Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
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

Daten aus Website in Excel übertragen

Daten aus Website in Excel übertragen
23.11.2018 20:09:31
Patrick
Guten Abend Miteinander,
Ich würde gerne eine Liste mit Symbol, Company und Price von einer Website in Excel einfügen (Link in der untenstehenden Datei).
Mittels Daten - Aus dem Web - Tabelle importieren ist es nicht möglich, da der Link zu lang ist. Mittels Power Query Add-In - Aus dem Web ist es leider auch nicht möglich, es werden lediglich die ersten 30 Zeilen angezeigt.
Wüsste jemand wie ich die gesamte Liste (rund 100'000 Zeilen) in Excel importieren kann?
Bin für jede Hilfe und Tipp dankbar!
Grüsse
Patrick
https://www.herber.de/bbs/user/125614.txt

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Website in Excel übertragen
24.11.2018 10:06:58
Günther
Versuche es doch einmal über eine Premium-Mitgliedschaft, die ist 7 Tage kostenlos ...
AW: Daten aus Website in Excel übertragen
24.11.2018 11:55:43
Patrick
Hallo Günther,
Danke für deine Antwort.
kurzfristig ist dies eine Lösung, langfristig leider nicht.
Hat vielleicht jemand noch eine Idee?
Grüsse
Patrick
AW: Daten aus Website in Excel übertragen
24.11.2018 12:18:30
Bernd
Hallo Patrick,
dein Vorhaben lässt sich in Excel m.E. nicht realisieren, da deine URL 255 Zeichen überschreitet.
Gruß
Bernd
AW: Daten aus Website in Excel übertragen
24.11.2018 12:33:14
Patrick
Hallo Bernd,
Danke für deinen Hinweis.
Über das Addin Power Query lässt sich auf die Liste eine Verknüpfung erstellen, jedoch werden nur die ersten 30 Einträge angezeigt.
Vielleicht gibt es die Möglichkeit mit einem Makro jeweils eine Seite nach vorne zu gehen und die Daten zu übertagen/kopieren?
Grüsse
Patrick
Anzeige
AW: Daten aus Website in Excel übertragen
24.11.2018 12:42:51
Günther
Moin Patrick,
dieses Argument verstehe ich nicht (will ich vielleicht auch nicht verstehen). Willst du damit zum Ausdruck bringen, dass dir 7 Tage Full-Service zum Nulltarif zu kurz sind?
AW: Daten aus Website in Excel übertragen
24.11.2018 12:45:47
Patrick
Hallo Günther,
Da ständig Unternehmen aus Indexes entfernt werden bzw. neue hinzukommen, bräuchte ich 2-3 mal pro Jahr eine Aktualisierung dieser Liste.
Grüsse
Patrick
AW: Daten aus Website in Excel übertragen
24.11.2018 15:04:13
c
...die Lösung könnte "Webscraper" heißen. Eine Freeware, die ich regelmäßig nutze, stammt von webscraper.io. Das ist ein AddOn für Google Chrome, mit dem man festgelegte Bereiche einer oder mehrerer Domains automatisiert als CSV speichern lassen kann. Vielleicht hilft dir das?
Anzeige
AW: Daten aus Website in Excel übertragen
25.11.2018 18:53:58
Patrick
Hallo C,
Danke für deinen Input.
Ich habe mal webscraper ausprobiert. Beim Erstellen der "Selectors" zeigt es mir die ganzen Daten der Tabelle an und sogar das Klicken um eine Seite vorwärts zu gehen funktioniert. Jedoch werden keine Daten beim downloaden in Excel übertragen. Ich hab dir mal die Sitemap in die angehängte Datei eingefügt, evtl. könntest Du die Sitemap bei dir importieren und schauen woran es liegt? Das wäre echt super!
Grüsse
Patrick
https://www.herber.de/bbs/user/125650.txt
AW: Daten aus Website in Excel übertragen
26.11.2018 20:27:24
c
Ich bin leider auch kein Profi im Webscraper. Aber hier ein Versuch:
https://www.herber.de/bbs/user/125665.txt
Bei mir hat es zumindest die ersten Seiten geladen. Ein paar Anmerkungen:
Er springt nicht in der erwarteten Reihenfolge. Er startet bspw auf der Seite eins, springt dann auf Seite 10 usw. Das hat er bei mir auch immer gemacht; meist fängt er sogar von hinten an. Letztlich musst du am Ende mal schauen, ob der Datensatz komplett ist.
Bei deinem Vorhaben scheinst du relativ viele Seiten zu scrapen...bei einer solch hohen Anzahl an Seiten habe ich die Erfahrung gemacht, dass der Scraper irgendwann plötzlich langsam wird. Mal passierte es ach 20.000 Daten, dann aber auch mal nach bereits 4.000. Das Laden einer Seite dauert dann bis zu 5 Sekunden. Es hilft, wenn du F5 drückst und die Seite neu lädtst; er macht dann meiner Erfahrung nach an der richtigen Stelle weiter. Alternativ: Neustart. Oder: Du schaust,ob du im Link irgendwo einen zu ladenden Bereich angeben kannst. In dem Link meines damaligen Projekts konnte ich bspw. immer den Domainbereich eingeben z.B. "[1-200]"...ich weiß aber nicht, ob das bei jeder Domain geht; glaubs eher nicht. Falls du professionellere Hilfe brauchst, kann ich dir das Forum empfehlen: https://forum.webscraper.io/c/how-to
Anzeige
So gehts mit 6 Zugriffen ;-)
26.11.2018 03:56:51
Zwenn
Hallo Patrick,
bei jeder Seite versuche ich die maximal angezeigten Treffer pro Seite nach oben zu manipulieren. Diese ist die erste bei der das funktioniert. Im Standard gehen maxiaml 100 Treffer, was für Dein Vorhaben 1.066 Zugriffe bedeuten würde. Das geht sicher auch, aber viel schöner ist es doch, wenn man den Zähler auf 20.000 schrauben kann ;-)
So kommst Du an Deine Werte. Die Preise musst Du noch so formatieren bzw. verarbeiten, dass dabei raus kommt, was Du willst. Der Internet Explorer kann auch ausgeblendet werden, wenn Du willst:

Sub StockListHolen()
'Voll viele URL Bestandteile,
'weil die URL ist echt lang
Dim url1 As String
Dim url2 As String
Dim url3 As String
Dim url4 As String
Dim url5 As String
Dim url6 As String
Dim url7 As String
Dim url8 As String
Dim url9 As String
Dim url10 As String
Dim url11 As String
Dim url12 As String
Dim url13 As String
Dim url14 As String
Dim url15 As String
Dim url16 As String
Dim url17 As String
Dim url18 As String
Dim url19 As String
Dim url20 As String
Dim url21 As String
Dim url22 As String
Dim url23 As String
Dim url24 As String
Dim urlParameterSeite As String
Dim urlSuchSeite As Long
Dim urlParameterTreffer As String
Dim urlTrefferProSeite As String
'Variablen fürs DOM (Document Object Model)
Dim browser As Object
Dim knotenWerte As Object
Dim knotenZelle As Object
Dim knotenEnde As Object
Dim urlStatisch As String
Dim urlGesamt As String
'Sonstige
Dim aktuellerWert As Long
Dim aktuelleZeile As Long
Dim aktuelleSpalte As Byte
Dim ende As Boolean
'URL Bestandteile zur Vermeidung von Zeilenumbrüchen im Forum
'(Die ganze URL geht ansonsten auch als eine String-Variable,
'außer die Such-Seite und die angezeigten Treffer pro Seite)
url1 = "https://www.gurufocus.com/stock_list.php"
url2 = "?m_country[]=USA&m_country[]=$OTCPK&m_country[]=$GREY&m_country[]="
url3 = "$NAS&m_country[]=$NYSE&m_country[]=$ARCA&m_country[]=$OTCBB&m_country[]="
url4 = "$AMEX&m_country[]=$BATS&m_country[]=$IEXG&m_country[]=CAN&m_country[]="
url5 = "$TSXV&m_country[]=$TSX&m_country[]=$XCNQ&m_country[]=$NEOE&m_country[]="
url6 = "_UK&m_country[]=GBR&m_country[]=_Europe&m_country[]=DEU&m_country[]="
url7 = "FRA&m_country[]=POL&m_country[]=RUS&m_country[]=SWE&m_country[]=TUR&m_country[]="
url8 = "BIH&m_country[]=ITA&m_country[]=LUX&m_country[]=CHE&m_country[]=BEL&m_country[]="
url9 = "GRC&m_country[]=NOR&m_country[]=ESP&m_country[]=DNK&m_country[]=BGR&m_country[]="
url10 = "NLD&m_country[]=ROU&m_country[]=FIN&m_country[]=SRB&m_country[]=AUT&m_country[]="
url11 = "HRV&m_country[]=PRT&m_country[]=SVK&m_country[]=CYP&m_country[]=MKD&m_country[]="
url12 = "SVN&m_country[]=UKR&m_country[]=HUN&m_country[]=LTU&m_country[]=LVA&m_country[]="
url13 = "MLT&m_country[]=ISL&m_country[]=EST&m_country[]=CZE&m_country[]="
url14 = "_Asia&m_country[]=JPN&m_country[]=KOR&m_country[]=THA&m_country[]="
url15 = "HKG&m_country[]=CHN&m_country[]=TWN&m_country[]=MYS&m_country[]=SGP&m_country[]="
url16 = "ISR&m_country[]=IDN&m_country[]=VNM&m_country[]=PHL&m_country[]=LKA&m_country[]="
url17 = "BGD&m_country[]=KWT&m_country[]=NPL&m_country[]=SAU&m_country[]=JOR&m_country[]="
url18 = "OMN&m_country[]=IRN&m_country[]=IRQ&m_country[]=ARE&m_country[]=KAZ&m_country[]="
url19 = "BAH&m_country[]=_Oceania&m_country[]=AUS&m_country[]=NZL&m_country[]="
url20 = "_SA&m_country[]=BRA&m_country[]=MEX&m_country[]=ARG&m_country[]=CHL&m_country[]="
url21 = "PER&m_country[]=COL&m_country[]=JAM&m_country[]=VEN&m_country[]=ECU&m_country[]="
url22 = "_Africa&m_country[]=ZAF&m_country[]=EGY&m_country[]=NGA&m_country[]="
url23 = "MUS&m_country[]=MAR&m_country[]=ZWE&m_country[]=KEN&m_country[]=TUN&m_country[]="
url24 = "GHA&m_country[]=CIV&m_country[]=_India&m_country[]=IND&m_country[]=PAK"
'Seiten und Treffer Handling
urlParameterSeite = "&p="
urlSuchSeite = 0 'Erste Seite ist mit 0 nummeriert
urlParameterTreffer = "&n="
'Die angezeigten Treffer pro Seite sind theoretisch beliebig manipulierbar.
'Bei 20.000 hat der HTML Quelltext 12,1 MB Text und ist auf meinem Rechner
'die Grenze des Erträglichen. Es dauert einigermaßen lange, diese Menge
'an Informationen zu verarbeiten. Aber so müssen nur 6 Seiten geladen werden,
'statt 1.066 bei 100 Treffern pro Seite
'Zum Vergleich: Die Bibel hat als reine Text-Datei ca. 4 MB
urlTrefferProSeite = "20000"
'Teil der URL, der den ersten langen statischen Teil bildet
urlStatisch = url1 & url2 & url3 & url4 & url5 & url6 & url7 & url8 & url9 & url10 _
& url11 & url12 & url13 & url14 & url15 & url16 & url17 & url18 & url19 & url20 _
& url21 & url22 & url23 & url24 & urlParameterSeite
'Die aktuelle Zeile und Spalte zum schreiben
'in der Excel-Tabelle initialisieren
aktuelleZeile = 2
aktuelleSpalte = 1
Do
'Internet Explorer initialisiern, Sichtbarkeit festlegen,
'URL aufrufen und warten bis sie vollständig geladen wurde
Set browser = CreateObject("InternetExplorer.Application")
browser.Visible = True
browser.navigate urlStatisch & urlSuchSeite & urlParameterTreffer & urlTrefferProSeite
Do While browser.readyState  4: DoEvents: Loop
'Auf Seite ohne Werte prüfen
'(Makro Ende, da keine Werte auszulesen sind)
Set knotenEnde = browser.document.getElementsByClassName("info")(0)
'Auf das Ergebnis des Letzte-Seite-Tests reagieren
If Not knotenEnde Is Nothing Then
If knotenEnde.innertext = "No stocks found." Then
'Letzte Seite wurde eingelesen
ende = True
End If
End If
If ende = False Then
'Direkt die relevanten Tabellenzellen der geladenen Seite in ein Array einlesen
Set knotenWerte = browser.document.getElementByID("R1").getElementsByTagName("td")
'Set knotenWerte = knotenTabelle.getElementsByTagName("td")
'Zellen-Zähler initialisieren
aktuellerWert = 1
'Alle Zellen durchgehen und gewünschte Werte in Excel-Tabelle schreiben
For Each knotenZelle In knotenWerte
'Zelle 1 = Symbol, Zelle 2 = Company, Zelle 3 = Price
'Zelle 4 ist irrelevant und dient hier als Zeilenwechsel
If aktuellerWert Mod 4  0 Then
'Wert in die aktuelle Zelle schreiben
Cells(aktuelleZeile, aktuelleSpalte).Value = knotenZelle.innertext
'Nächste Spalte
aktuelleSpalte = aktuelleSpalte + 1
Else
'Nächste Zeile
aktuelleZeile = aktuelleZeile + 1
'Spalte zurücksetzen
aktuelleSpalte = 1
End If
'Anzahl der Abzuarbeitenden Werte um 1 hochzählen
aktuellerWert = aktuellerWert + 1
Next knotenZelle
'Nächste Seite
urlSuchSeite = urlSuchSeite + 1
End If
'Aufräumen
browser.Quit
Set browser = Nothing
Set knotenWerte = Nothing
Set knotenZelle = Nothing
Loop Until ende
Set knotenEnde = Nothing
MsgBox "Fertig"
End Sub

Viele Grüße,
Zwenn
Anzeige
AW: So gehts mit 6 Zugriffen ;-)
26.11.2018 19:20:32
Patrick
Guten Abend Zwenn,
Vielen herzlichen Dank für deine Hilfe! Dein Makro funktioniert wunderbar :-) und dazu mit der Manipulation der Treffer pro Seite nach oben super schnell, wirklich klasse.
Darf ich mir erlauben noch eine Nachfrage bzw. Nachbitte zu stellen?
Und zwar habe ich versucht, dein Makro auf die Tabelle der Website: http://tools.morningstar.ch/ch/stockquickrank/default.aspx?Site=ch&LanguageId=de-CH
anzuwenden. Diese Liste benötige ich um die entsprechende Börse je Aktie zu erhalten, um schlussendlich die beiden Tabellen von Guru.com und Morningstar zu kombinieren damit ich alle Daten habe. Leider scheint dies nicht so einfach übertragbar zu sein, da die Morningstar Website auch anders funktioniert. Erschwerend kommt dazu, dass jeder "Exchange" (Börsenplatz) einzeln durchgeklickt werden müsste. Ich habe bereits den Support beider Websiten angefragt, ob man evtl. eine Spalte mit "Börse" bzw. eine Spalte mit "Symbol" hinzufügen könnten, da die Daten bei Ihnen ja vorhanden sind, dies würde aber nicht mit Ihrer Produkt Strategie übereinstimmen und deshalb nicht machbar. Deshalb versuche ich mir die Daten aus dem Internet zusammen zu schustern. Vielleicht ist es für Dich möglich deinen Makro auf die Tabelle von Morningstar anzupassen?
Grüsse
Patrick
Anzeige
Jede Seite tickt anders
27.11.2018 13:01:49
Zwenn
Hallo Patrick,
so wie Du Dir das vorstellst funktioniert es leider nicht. So ein Makro wird immer maßgeschneidert auf die auszulesende Internetseite entwickelt. Es gibt kein Universalmakro, welches für alle Seiten funktioniert. Das Auslesen über das DOM (Document Object Model) basiert auf der Struktur einer Seite, über die die Inhalte identifiziert werden. Die Struktur ist aber natürlich für jede Internetseite individuell.
Die von Dir neu verlinkte Seite erscheint mir um einiges komplexer, als die erste. Man muss die Dropdownlisten für die Börsen und die Treffer pro Seite steuern, da es so ohne weiteres keine Möglichkeit gibt, die URL nach den eigenen Wünschen zu manipulieren. Die Seite verwendet Post statt Get, um mit dem Web-Server zu kommunizieren. Bei Get sind die Parameter in der URL offen zu lesen, bei Post läuft das im Hintergrund ab und die URL sieht immer gleich aus.
Da die Seite (bisher) kein HTTPS verwendet, könnte man über das Mitlesen und Auswerten des Netzwerkverkehrs eventuell rausbekommen, wie man das Ganze selbst über Post aufbauen müsste oder man muss es eben über die Dropdownlisten steuern. Mir fehlt leider für beides im Moment die Zeit, da die Sache mit dem Netzwerkverkehr sehr aufwändig werden kann (ohne evtl. ein gutes Ergebnis zu bekommen) und an Dropdownlisten habe ich mir schon einmal die Zähne ausgebssen. Ich habe es nicht hinbekommen das Changeereignis einer Seite auszulösen. Ich müsste mich also in die Materie vertiefen, wozu ich aber wie gesagt im Moment keine Zeit habe.
Vielleicht hat C eine Idee, wie mit dem von Ihm vorgschlagenen Chrome AddOn geht.
Viele Grüße,
Zwenn
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige