Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
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 laden von Website mit JavaScript

Daten laden von Website mit JavaScript
21.08.2018 18:20:13
Website
Hi Zusammen,
kennt sich jemand mit laden von Daten aus Java Script Websiten aus?
Speziell welche mit einem Token?
Dies ist ein Teil aus dem Quelltext der Website:
<title>Empfangen</title>
<link href='/assets/favicon-cd9......ico' rel='shortcut icon'>
****** name="csrf-param" content="authenticity_token" />
****** name="csrf-token" content="WfrZ........==" />
<!--[if lt IE 9]>
******** src="/assets/html5-e3b
Danke & Gruß
Silent

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten laden von Website mit JavaScript
21.08.2018 18:49:06
Website
Hallo silent_Warrior5,
ich sehe kein einziges Zeichen in Deinem Code Fragment, das etwas mit JavaScript zu tun hat. Das ist einfach nur ein HTML Title Tag und ein HTML Link. Dazu ein paar anonymisierte Zeilen. Das was du spezielle Token nennst, sind nur die Werte der Attribute Content und Name.
Wenn Du Hilfe zum Extrahieren von Daten aus einer Webseite brauchst, dann musst Du diese entweder verlinken oder mindestens den Seitenquelltext als TXT Datei zur Verfügung stellen. Den ganzen, sonst kann es zu Problemen kommen, weil der Helfer von falschen Annahmen ausgeht. Darüber hinaus kann man Dir auch nicht helfen, wenn Du nicht sagst, welche Daten Du eigentlich haben willst.
Viele Grüße,
Zwenn
Anzeige
AW: Daten laden von Website mit JavaScript
21.08.2018 19:16:21
Website
Hi,
ich kann den Quelltext hier nicht so einfach für jedermann sichtbar hochladen. Könnte ich ihn dir per Mail schicken das du ihn vertraulich behandelst und danach wieder löscht?
Ich habe extra keine spezielle Frage gestellt, habe bereits wo anders nach Hilfe gesucht doch niemand konnte mir da bis jetzt Ansatzweise helfen. Deswegen dachte ich mir spare mir das, und frage erstmal ob sich jemand damit auskennt, bevor es wieder crossposting heißt. Wobei ich ja da eine andere Sichtweise auf das Thema habe als andere, aber egal.
zu dem Token: Dachte der Begriff "csrf-token" wäre ein Zeichen dafür das es sich um die Autorisierung mit einem Token handelt? Habe zudem auch noch ein Session cookie gefunden, welches immer aktualisiert wird wenn man die Seite aufruft.
Danke & Gruß
Silent
Anzeige
AW: Daten laden von Website mit JavaScript
21.08.2018 22:42:37
Website
Hi,
also mit zumailen ist eher schlecht im Moment. Damit sage ich ja praktisch zu, mich eingehender und exklusiv um die Sache zu kümmern. Dazu habe ich aber grade keine Zeit, da ich die kommenden Tage anderweitig eingespannt bin. Deshalb ein paar allgemeine Erklärungen.
Um Session Cookies brauchst Du Dir keine Gedanken machen. Um Infos aus einer Webseite auszulesen muss sie aufgerufen werden. Dabei funktioniert die Seitenmechanik ganz genauso, wie beim manuellen Aufruf.
Wenn es sich um zusammenhängende Tabellen handelt, aus denen Du alle Werte auslesen willst, funktioniert das mit PowerQuery am einfachsten. Das ist ein Excel eigenes Werkzeug, was auch ohne Makro funktioniert. Dafür gibts hier aber andere Experten, die sich damit wesentlich besser auskennen als ich.
Für über die Seite verteilte Werte oder Werte, die nur im Quelltext der Seite sichtbar sind, wird die Seite im Internet Explorer aufgerufen. Dann kann man über das DOM (Document Object Model) auf die Inhalte der Seite zugreifen. Das geht von Haus aus auch nur mit dem Internet Explorer, weil die Fernsteuerung eines Programms über ein VBA Makro eine COM Schnittstelle (Component Object Model) voraussetzt. Der IE ist der einzige Browser, der die direkt mitbringt.
Zur Info: http://de.wikipedia.org/wiki/Component_Object_Model
Um Werte über das DOM auszulesen, muss man sich die Struktur der HTML Seite zu Gemüte führen. Wenn man also mit HTML, CSS und ggf. auch mit JavaScript nix anfangen kann, kann man keine Werte übers DOM abgreifen. Solche Lösungen sind für jede Seite individuell zu entwickeln.
Da ich Deine Seite nun nicht kenne und auch nicht weiß, was Du eigentlich auslesen willst, gebe ich Dir mal ein Beispiel aus der Vergangenheit, das recht gut dokumentiert ist. Einiges davon würde ich heute anders erklären, aber im Großen und Ganzen sind die folgenden Links gut geeignet, um sich in die Arbeit mit dem DOM einzuarbeiten. Ich sage aber auch gleich dazu, dass der Schwierigkeitsgrad solcher Makros auf jeden Fall höher ist, als grundlegende Excel Funktionen in einem Makro zu verwenden. Die Komplexität insgesamt hängt dann zusätzlich vom Quelltext der Seite ab und was man an Infos rausholen will.
Es geht darum NBA Ergebnisse von dieser Seite auszulesen:
http://basketball.wettpoint.com/liga/nba-usa.html
Hier findest Du einführende Erklärungen:
https://www.herber.de/cgi-bin/callthread.pl?index=1492241#1493245
Die verlinkte Excel Datei mit Makro lässt sich dort nicht mehr runterladen. Deshalb habe ich es neu hochgeladen. Der VBA Code ist mit vielen Kommentaren versehen:
https://www.herber.de/bbs/user/113442.xlsm
DOM Dokumentation (Englisch und nicht trivial, Beispiele in der Regel in anderen Programmiersprachen als VBA):
http://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
Noch etwas zu Attributen:
In Deinem Fall steht da was mit Token. Ganz allgemein werden solche Attribute von der Seite auch für irgend etwas verwendet. Es spielt in der Regel aber keine Rolle, für was. Vielmehr nutzt man sie beim Auslesen von Seiten zur Identifikation von Informationen, auf die man zugreifen will.
Attribute sind einigermaßen beliebig. Sie werden von den Seitenentwicklern eingeführt wie wir z.B. Variablen in VBA einführen. Wir denken uns die Namen aus und belegen sie mit Werten. Ganz eins zu eins stimmt die Erklärung zwar nicht, aber für das Verständnis sollte das reichen. Es sind (meistens) keine Standardwerte, die auch auf anderen Seiten auftauchen will ich damit sagen.
Ich hoffe die Erklärungen helfen Dir weiter.
Viele Grüße,
Zwenn
Anzeige
AW: Danke! (owT)
22.08.2018 11:55:39
Fennek
AW: Daten laden von Website mit JavaScript
23.08.2018 14:20:01
Website
Hi Zwenn,
danke für die Erklärungen, nur mein Problem dabei ist, dass ich folgendes Makro versucht habe, er aber meldet "Forbidden" also sowas wie zugriff verweigert. Ebenfalls mit einer Query Connection getestet wo dann dieser Fehler kam:
Note: Since your browser does not support JavaScript, you must press the Resume button once to proceed.

Sub Dow_HistoricalData()
Dim xmlHttp As Object
Dim TR_col As Object, TR As Object
Dim TD_col As Object, TD As Object
Dim row As Long, col As Long
Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
xmlHttp.Open "GET", "https://musterfirma.coupahost.com/receipts?cond%5B1%5D%5Bcol_key%5D= _
order_header_id&cond%5B1%5D%5Border_heade r_id%5D=1372229&cond%5B1%5D%5Border_header_id_op%5D=eq&search_mode=advanced", False
xmlHttp.setRequestHeader "Content-Type", "text/xml"
xmlHttp.Send
Dim html As Object
Set html = CreateObject("htmlfile")
html.body.innerHTML = xmlHttp.responseText
Dim tbl As Object
Set tbl = html.getElementById("curr_table")
row = 1
col = 1
Set TR_col = html.getelementsbytagname("TR")
For Each TR In TR_col
Set TD_col = TR.getelementsbytagname("TD")
For Each TD In TD_col
Cells(row, col) = TD.innerText
col = col + 1
Next
col = 1
row = row + 1
Next
End Sub
Mein Problem ist ja: Ich kann die Verbindung zur Website nicht herstellen, und deswegen auch keine Daten laden. Beide Makros gehen wenn ich manuell die query connection bearbeitet habe mich durch 4 Script Fehlermeldungen gearbeitet habe und dann die Seite im internen IE von Excel geladen habe, dann läd er alles Prima, aber ich bräuchte einen weg, das ich nicht immer manuell die Verbindung bearbeiten und mich durchklicken muss. Deswegen dachte ich das ich irgendwie den Login mit dem Token brauche?
Danke & Gruß
XD
Anzeige
AW: Daten laden von Website mit JavaScript
23.08.2018 18:52:23
Website
Hi
Deine Haltung zum Thema Cross-Posting solltest du unbedingt ändern.
Verstehen wofür CSRF steht:
Leider englisch, aber eine tolle Beschreibung gleich am Anfang
https://stackoverflow.com/questions/5207160/what-is-a-csrf-token-what-is-its-importance-and-how-does-it-work
Allgemeiner
https://de.wikipedia.org/wiki/Cross-Site-Request-Forgery
Daraus würde ich ableiten, dass dein Code genau das macht, was man eigentlich verhindern will.
Womit wir bei der bereits gegebenen Antwort von Zwenn wären. Nebst anderen wertvollen Hinweisen schreibt er, dass du mit dem Webbrowser arbeiten musst und genau das macht das kommentierte Makro in seiner Datei...
CreateObject("internetexplorer.application")
cu
Chris
Anzeige
Danke für die Erklärung Chris (owT)
24.08.2018 19:24:37
Zwenn
AW: Danke für die Erklärung Chris (owT)
27.08.2018 15:59:23
silent_Warrior5
Hi Chris,
so hab nun ein Marco zusammengebastelt was funktioniert. Joar der Tipp war gut, was ich nur bissi schade finde das Microsoft nicht mal ihren internen IE im Excel upgradet das der auch ohne Probleme mit Java Script klar kommt? Das letzte Update war sowie ich weiß nur Design Anpassung auf WIN10? naja egal
und zum Thema Cross-Posting:
Also wenn ich in Forumen eine Frage stelle, und nach 9 (in Worten: neun!) Tagen keine Antwort jeglicher Art erhalte (hier hat ja ein kleiner Tipp gereicht das ich das ganze via Internet Explorer Application ansteuern muss) dann werde ich doch wohl wo anders nachfragen dürfen? Ohne das gleich einer Crossposting schreit? Außerdem wäre ich ja dafür das es eine Art Status "Work in Progress" oder sowas ähnliches in einem Forum geben müsste, wenn jemand sich dem Thema annehmen mag und helfen mag, und es sich von seinem Wissensstand her zutraut, das er dann einfach den Button drückt und der Fragesteller merkt "ja alles klar, da ist jemand dran" und das Problem was ich ja dabei sehe ist, woher soll man Wissen in welchem Forum sich speziell Experten für ein Thema was man braucht tummeln? Wenn ich nun z.b. wüsste alles klar hier im Herber Forum sind Leute die kennen sich super mit Laden von Daten aus Websiten aus dann stell ich hier ne frage und erhalte hoffentlich dann bald "ja kümmert sich jemand drum" und brauch nirgends anders fragen, und somit wäre es einfacher.
Also zusammenfassend würde ich es gut finden wenn :
1) in einem Forum lesen kann was für Schwerpunkte bzw. welche Spezialgebiete die Mitglieder haben.
2) eine Art "Work in Progress" Status man einführt das die Leute wissen ja da kümmert sich jemand drum.
Und somit denke ich entfällt auch das fragen in andern Foren und somit das Cross-Posting...
Naja nur so ein Gedanke den ich mal in den Raum werfen mag.
Jedenfalls Zwenn und Chris danke für den kleinen Denkanstoß habe das Marko nun fertig gebastelt.
Gruß
Silent

Anzeige
AW: Danke für die Erklärung Chris (owT)
27.08.2018 19:31:15
ChrisL
Hi
Freut mich, dass es funktioniert und danke für die Rückmeldung. Das Tüpfelchen auf dem i wäre, wenn du die Lösung noch posten würdest. Vielleicht hilft es jemandem, der sich den Archivbeitrag anschaut. Dies ist keine Reklamation, sondern Teil des KVP's (kontinuierlicher Verbesserungsprozess) :-)
Jeder darf seine eigene Meinung zu Cross-Posting haben und abgesehen von ein paar giftigen Kommentaren (auch die andere Seite darf eine Meinung haben) hindert dich niemand daran.
Fakt ist, dass ich den Beitrag zwar schon länger verfolgt habe, aber aufgrund des Cross-Posts bewusst nicht geantwortet habe. Cross-Poster landen bei vielen der regelmässigen freiwilligen Antwortern automatisch auf der "Schwarzen Liste".
Und wenn du dann noch zum Ausdruck bringst, dass du das Thema zwar zur Kenntnis nimmst, es aber trotzdem nicht einsiehst, dann wird es zur Absicht.
Grund genug für eine Empfehlung meinerseits, es nicht zu tun.
Ich wusste bis zuletzt nicht, ob im anderen Beitrag vielleicht doch noch eine Antwort eingegangen ist. Einmal kurz den Link gepostet (SF bat dich freundlich darum) und alles wäre OK gewesen.
Deine Idee für die Angabe von Spezialgebieten (in meinem Fall "Googler") finde ich zwar grundsätzlich gut, aber daraus einen Anspruch auf Antwort (es kümmert sich jemand drum) abzuleiten wäre falsch. Du hast zwar die Möglichkeit einen Beitrag als "offen" zu kennzeichnen, aber ob jemand unentgeltlich seine Freizeit opfert, um die Excel-Probleme anderer zu lösen, solltest du schon den potenziellen Helfern selber überlassen.
cu
Chris
Anzeige
AW: Daten laden von Website mit JavaScript
21.08.2018 18:56:49
Website
Hola,
verlinkst du bitte deine Fragen in den verschiedenen Foren untereinander?
Danke.
Gruß,
steve1da

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige