Daten aus Webseite

  • Servus

    Ich würde gern Koordinaten aus einem Stadtplan lesen, hab aber keine Ahnung, ob das (bei dieser Seite) überhaupt möglich ist.
    Die Seite wäre
    http://www.wien.gv.at/stadtplan/
    Da gibts links oben die Suchfunktion und rechts daneben (im Kartenbereich) 5 Buttons.
    Wenn man den mittleren (das Maßband) anklickt erscheinen links 3 Radio-Buttons - bitte "Koordinaten" aktivieren.
    Der Mauszeiger ist jetzt ein (Faden-)kreuz.
    Klickt man damit in den Plan werden sowohl an der jeweiligen Stelle wie auch im linken Bereich die entsprechenden Koordinaten angezeigt.
    Diese Werte (Zahlenpaare) würde ich gerne lesen und weiterverarbeiten. (Das Herunterladen als *.gpx-File funktioniert (bei mir?) leider nicht.)

    Könntet Ihr mal begutachten, ob das möglich wäre?
    Ich hab mal nach den Werten im Seitenquelltext gesucht, sie aber nicht gefunden, aber vielleicht geht's ja doch?

    Und falls es geht, würdet Ihr mir die wichtigsten Funktionen nennen, mit denen ich mich beschäftigen muss / die mich ans Ziel bringen?


    SG, entsel

    Schöne Grüße,
    entsel
    AutoLisp(eln) geht ganz gut, aber AutoIt nur mit Dictionary. 
    Das Problem - man sollte wissen, welche Vokabel man sucht.

  • Steht doch alles wichtige im Quelltext der Seite:

    Spoiler anzeigen
    PHP
    <tbody xmlns="http://www.w3.org/1999/xhtml"><tr id="trRowHeader"><td colspan="4">Meine Koordinaten:</td></tr><tr id="trRowHeader"><td/><td style="text-align: center;">Rechtswert [m]</td><td style="text-align: center;">Hochwert [m]</td></tr><tr id="trRow1" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[1]</b> </td><td style="text-align: center;">-1016.41</td><td style="text-align: center;">341661.27</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr><tr id="trRow2" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[2]</b> </td><td style="text-align: center;">-1609.08</td><td style="text-align: center;">341695.13</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr><tr id="trRow3" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[3]</b> </td><td style="text-align: center;">4707.07</td><td style="text-align: center;">340137.26</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr><tr id="trRow4" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[4]</b> </td><td style="text-align: center;">7653.48</td><td style="text-align: center;">342999</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr></tbody>


    und da alles gut benannt ist, lasst sich vermutlich mit regexp (gibt es hier ein sehr gutes tutorial) und inetread machen was du brauchst.
    Funktionen:

    [autoit]

    BinaryToString(InetRead())

    [/autoit]

    und

    [autoit]

    StringRegExp()

    [/autoit]


    Edit sagt, dass diese Funktionen hier die bessere Wahl ist - da die andere deine Änderungen nicht berücksichtigt:

    [autoit]

    _IEDocReadHTML

    [/autoit]

    Einmal editiert, zuletzt von Hakeem (18. Februar 2012 um 20:06)

  • Danke für die Hinweise.

    Leider habe ich auf diesem Gebiet mehr Lücken als Wissen, erst recht, wenn vielleicht noch Javascript im Spiel ist.
    Könntest Du mir deshalb verraten, wie/wo Du diesen Quelltext gefunden hast?

    Ich finde meine Koordinaten nämlich weder in dem Quelltext, den mir Firefox mit "Seitenquelltext anzeigen" liefert,
    noch in der, mit folgendem Code erzeugten, Datei:

    [autoit]

    $Data = InetRead("http://www.wien.gv.at/stadtplan/")
    $qtext = BinaryToString($Data)
    $file = FileOpen("c:tmp\test.txt", 10)
    FileWrite($file, $qtext)
    FileClose($file)

    [/autoit]

    SG, entsel

    Schöne Grüße,
    entsel
    AutoLisp(eln) geht ganz gut, aber AutoIt nur mit Dictionary. 
    Das Problem - man sollte wissen, welche Vokabel man sucht.

  • Ich muss zugeben, dass ich mich schon bei den ersten Tipps festgefahren hatte, bin dann soweit gar nicht gekommen.

    Aber auch mit
    _IEDocReadHTML
    komme ich nicht ans Ziel. Liegt zum einen daran, dass ich nicht schlau werde, womit ich die Funktion zu füttern habe.
    Was ist eine "Objektvariable einer InternetExplorer.Application, eines Window- oder eines Frame-Objekts"?
    Und im Beispiel in der Hilfe kommt wiederum keine URL vor.
    Zum anderen sollte ich vielleicht nochmal klarstellen, dass die Seite mit Firefox erzeugt wird!
    Und wie SEuBo hier
    [ offen ] _INetGetSource oder _IEDocReadHTML?
    schreibt, beruht die Funktion ja auf dem IE.

    SG, entsel

    Schöne Grüße,
    entsel
    AutoLisp(eln) geht ganz gut, aber AutoIt nur mit Dictionary. 
    Das Problem - man sollte wissen, welche Vokabel man sucht.

  • Ich kenne leider gerade keine Firefox-UDF mit der das ähnlich einfach zu machen ist. Vielleicht findet sich ja eine im Netz z.B. in diesem oder dem englischsprachigen Forum.

    Den Quelltext habe ich mit Firefox direkt aus der Seite gezogen. Und zwar hab ich es mir ganz einfach gemacht: den entsprechenden Teil markiert und dann "Auswahl-Quelltext anzeigen" gewählt. Falls du öfters was mit "Web" machst empfehle ich dir ausserdem das "Firebug -Add-on".

    Der Nachteil von InetRead ist, dass es die Originalseite vom Server liest. Aber du willst ja die Seite, wie sie bei dir nach deinen Eingaben aussieht und da ist eben _IEDocReadHTML praktisch.

    Schau dir mal _IECreate an, dann kommst du vlt. darauf was mit Objektvariable gemeint ist. Ein Blick in die IE.au3 verrät dir dann auch, was _IE_Example() eigentlich macht... so kannst du dir die Gesamtzusammenhänge besser erschließen. Simple said: mit der ApplicationObject-Variable kannst du das (soeben erzeugte) Browserfenster ansprechen und somit abfragen und manipulieren. Ohne Grundkenntnisse in HTML und dem DOM wirst du es aber recht schwer haben.

    Da du vermutlich auch nicht ohne weiteres einen Weg findest die Kartenpunkte automatisch anzusteuern, könntest du dir auch überlegen diesen Teil des Programms komplett manuell zu machen (punkte anklicken, koordinaten mit c&p "verarbeiten") und dich ganz auf das Programm zur Weiterverarbeitung konzentrieren.

    Manchmal hilft es auch detaillierter zu verraten was man vorhat, dann kann dir evtl. auch jemand mit einer Idee für einen ganz neuen Lösungsansatz "auf die Sprünge" helfen.

  • Hallo Hakeem

    Zitat

    Falls du öfters was mit "Web" machst ...

    Nein, ich steig ja erst in AutoIt ein, da hat sich das grad angeboten, darüber nachzudenken ...

    Zitat

    Grundkenntnisse in HTML und dem DOM ...?

    NaJa, sehr rudimentär. Wie ich sehe, müßte ich da wohl noch viel Zeit investieren ...

    Zitat

    ... koordinaten mit c&p "verarbeiten"

    An Copy&Paste hab ich auch schon gedacht, wird wohl die schnellere Lösung sein.
    Und was ich vorhab? Es sollte ein DXF-File erzeugt werden - also eine CAD-Zeichnung - mit Objekten an der jeweiligen Position.

    Danke für die Info
    SG, entsel

    Schöne Grüße,
    entsel
    AutoLisp(eln) geht ganz gut, aber AutoIt nur mit Dictionary. 
    Das Problem - man sollte wissen, welche Vokabel man sucht.