none
Zugriff auf WebBrowser.Document.Body.InnerText gelingt nicht RRS feed

  • Frage

  • Was funktioniert:
    Ich beziehe bei etlichen Anbietern via Internet Daten, die ich in eigenen Programmen weiterbearbeite. Z. B. bei Cluster.f5len.org. (Ich kann die die URL hier nicht eingeben). Ich sehe dann im Quellcode die Tabellendaten  Dann arbeite ich mit WebBrowser.Document.Body.InnerText, usw weiter. Das läuft zuverlässig.

    Was mir nicht gelingt und wo ich deshalb Hilfe benötige:
    Andere Anbieter haben einen anderen Seitenaufbau. Z. B. Reversebeacon.net. Hier sind Programmierdaten statt eines Quellcodes mit Tabellendaten sichtbar. JavaScript?

    Ich arbeite mit VB.NET 2027. Gibt es Möglichkeiten diese Daten ebenso zu bezeihen und in meiner Applikation zu verarbeiten? Danke für Hinweise und Suchrichtungen.

    Sonntag, 26. August 2018 09:08

Antworten

  • Hi,
    reversebeacon.net lädt per JavaScript die Daten und aktualisiert sie aller 60 Sekunden. Du musst also etwas warten, bis Du auf das DOM zugreifst. Das musst ggf. mehrmals machen, wenn das Laden etwas länger dauert.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Sonntag, 26. August 2018 12:09
  • Hi Roland,
    als Mitwirkender bei UA3KAS vor vielen Jahren habe ich Dich auf uska.ch gefunden :-)

    Wichtig ist zu verstehen, dass alle Anzeigen letztendlich in das DOM (Document object model) geschrieben werden, egal ob als html-Text direkt vom Server oder per JavaScript initiiert vom Client nachgeladen wird. Reversebeacon.net macht das per JavaScript für die Bereiche rechts sofort, nachdem das Dokument zur Anzeige gekommen ist und dann immer wieder nach 60 Sekunden. Die Nutzerdaten siehst Du im Fall des Nachladens natürlich nicht im übertragenen html-Text. Im Internet Explorer oder Edge kannst Du mit F12 die Innerreihen anschauen.

    Mit welcher Url hast Du noch Probleme?


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Sonntag, 26. August 2018 15:35
  • Hi Roland,
    zu verstehen ist, dass nach der Anforderung vom Client (Request) der Web-Server einen html-Text zurückliefert. Daraus wird das DOM (Document Object Model) gebaut und angezeigt. Darin befinden sich "freie" Bereiche. Nach dem Abschluss des Ladens wird ein JavaScript gestartet (z.B. $(document).ready(function()). Dieser wendet sich wieder an den Web-Server und bekommt von ihm neue Daten. Nach dem Erhalt dieser Daten schreibt der JavaScript die erhaltenen Daten in das DOM und bringt das neue DOM zur Anzeige.

    Du hast zwei Möglichkeiten:

    1. regelmäßig das DOM auslesen und auswerten.

    2. besser ist es, den Anbieter zu fragen, ob es vielleicht eine andere Möglichkeit gibt. Der JavaScript fragt üblicherweise einen Web-Service nach Daten. Wenn man jetzt vom Anbieter die Zugangsbeschreibung bekommt, dann kann man mit einfachen Befehlen selbst auch diesen Service abfragen und die erhaltenen Datenstrom auswerten. Dann braucht man nicht diese Website. Alternativ kann man auch mit Fiddler den Datenverkehr protokollieren und dann die Abfrage-Technik ermitteln.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 29. August 2018 19:25

Alle Antworten

  • Hi,
    reversebeacon.net lädt per JavaScript die Daten und aktualisiert sie aller 60 Sekunden. Du musst also etwas warten, bis Du auf das DOM zugreifst. Das musst ggf. mehrmals machen, wenn das Laden etwas länger dauert.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Sonntag, 26. August 2018 12:09
  • Guten Tag und vielen Dank für den Hinweis Peter
    Das Laden und die Präsentation dieser modern aufgearbeiteten Seiten (Beispiel Reverse Beacon) läuft einwandfrei. Ich kann mit der üblichen Methode nach DocumentCompleted mittels WebBrowser.Document.Body.InnerText die Daten beziehen und anschliessend mit
    VB.NET bearbeiten. Das Problem an dem ich herumknorze sind die offenbar mit einer neueren Technik erstellten Seiten. Ich sehe deren Quelltext, jedoch nicht die Nutzerdaten, sondern nur Programmdaten. Mit anderen, konventionell aufbereiteten Seiten (Beispiel dxcluster.co.uk) komme ich einwandfrei klar. Ich bin überzeugt, das haben andere schon lösen können. Übrigens, ich bin kein Informatik-Professional sondern (Radio-Amateur). Ich beziehe die Tipps und stelle dann meinen Sende-Empfänger ein. Vielen Dank Roland, HB9BQR

    Sonntag, 26. August 2018 13:37
  • Hi Roland,
    als Mitwirkender bei UA3KAS vor vielen Jahren habe ich Dich auf uska.ch gefunden :-)

    Wichtig ist zu verstehen, dass alle Anzeigen letztendlich in das DOM (Document object model) geschrieben werden, egal ob als html-Text direkt vom Server oder per JavaScript initiiert vom Client nachgeladen wird. Reversebeacon.net macht das per JavaScript für die Bereiche rechts sofort, nachdem das Dokument zur Anzeige gekommen ist und dann immer wieder nach 60 Sekunden. Die Nutzerdaten siehst Du im Fall des Nachladens natürlich nicht im übertragenen html-Text. Im Internet Explorer oder Edge kannst Du mit F12 die Innerreihen anschauen.

    Mit welcher Url hast Du noch Probleme?


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Sonntag, 26. August 2018 15:35
  • Vielen Dank und Gruss Peter
    Du schreibst "Die Nutzerdaten siehst Du im Fall des Nachladens natürlich nicht im übertragenen html-Text" Da, das stimmt. Aber wie komme ich den zu diesen Daten? Wie ich die Daten herausbekomme habe ich immer noch nicht begriffen...

    Zu Deiner Frage: Eine gleiche Problematik habe ich bei der Seite "eham.net/DX/spots."

    Vor vielen Jahren, als ich die Webbrowser.Document.Body.innertext - Technik noch nicht kannte, habe ich die geladene Seite in den Zwischenspeicher kopiert und dann in meine Applikation genommen (?!???).

    Kannst Du mir noch etwas weiter auf die praktischen Sprünge helfen? Danke von Roland, HB9BQR

    Mittwoch, 29. August 2018 10:57
  • Hi Roland,
    zu verstehen ist, dass nach der Anforderung vom Client (Request) der Web-Server einen html-Text zurückliefert. Daraus wird das DOM (Document Object Model) gebaut und angezeigt. Darin befinden sich "freie" Bereiche. Nach dem Abschluss des Ladens wird ein JavaScript gestartet (z.B. $(document).ready(function()). Dieser wendet sich wieder an den Web-Server und bekommt von ihm neue Daten. Nach dem Erhalt dieser Daten schreibt der JavaScript die erhaltenen Daten in das DOM und bringt das neue DOM zur Anzeige.

    Du hast zwei Möglichkeiten:

    1. regelmäßig das DOM auslesen und auswerten.

    2. besser ist es, den Anbieter zu fragen, ob es vielleicht eine andere Möglichkeit gibt. Der JavaScript fragt üblicherweise einen Web-Service nach Daten. Wenn man jetzt vom Anbieter die Zugangsbeschreibung bekommt, dann kann man mit einfachen Befehlen selbst auch diesen Service abfragen und die erhaltenen Datenstrom auswerten. Dann braucht man nicht diese Website. Alternativ kann man auch mit Fiddler den Datenverkehr protokollieren und dann die Abfrage-Technik ermitteln.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 29. August 2018 19:25
  • Guten Tag Peter
    Dank Deinem Hinweis Möglichkeit 1 ist die Sache nun klar und gelungen. Ich lade im Hintergrund die Seite, sie wird ja periodisch aktualisiert. Dann frage ich, wie üblich mittels Webbrowser.Document.Body.OuterText (oder ähnlich) ab, wenn ich die Daten aktuell benötige. Einfach, wenn man weiss wie! Ich war immer auf das DocumentCompleted-Ereignis fixiert. Vielen vielen Dank Peter, Du hast mir seeeeeeehr geholfen!
    Mit den besten Grüssen, Roland Burkhard, HB9BQR

    Donnerstag, 30. August 2018 12:29