Fahrplanauskunft??

  • VB.NET

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Fahrplanauskunft??

    hi,
    wollte mal fragen ob ihr euch vllt. damit auskennt.
    Undzwar möchte ich in mein programm eine i-net fahrplauskunft einbauen.
    die auskunft klappt ja auch schon ganz gut, allerdings nur die aktuelle zeit, aber das ist erstmal nicht mein problem.
    der link zur auskunft ist folgender:

    HTML-Quellcode

    1. http://reiseauskunft.bahn.de/bin/query.exe/d?S=Kreuztal!&Z=Kevelaer!&start=1

    die seite im browser zeigt dann direkt die ergebnisse an, aber gibt es eine möglichkeit die ergebniss-wiedergabe in meinem programm anzuzeigen, und nicht im standard webbrowser, ich weiss zwar das es das webbrowser-control gibt, das nutze ich zwar auch, allerdings möchte ich nicht die ganze seite, sondern nur die ergebnisse sehen, wenn ihr den link öffnet wisst ihr auch was ich meine. da ich mich nicht mit quelltexten auskenne, kann ich mir auch keine informationen angucken(auf der homepage). aber vllt. könnt ihr ja irgendwelche nutzvollen infos sehen.
    hoffe ihr könnt mir vllt. irendwie helfen.

    thanks

    p.s.
    über die kontakt funktion zur db klappt es leider nicht. die db hat davon keine ahnung, zu mindest nicht die db selbst.

    URL änderung!!!

    also nochmal an alle, die normale url heißt:

    HTML-Quellcode

    1. http://reiseauskunft.bahn.de/bin/query.exe/d

    die andere url ist eine benutzerdefinierte url, die bestimmte orte anzeigt. aber die normale url ist die von oben. und wenn man dann gesucht hat werden die ergebnisse in folgender url angezeigt:

    HTML-Quellcode

    1. http://reiseauskunft.bahn.de/bin/query.exe/dn?ld=9647&country=DEU&rt=1&OK#focus

    leider keinerlei hinweise auf ortsangabe oder ähnliches. nichts was irgendwie hilfreich ist. ?(

    dbsystel schrieb:

    leider keinerlei hinweise auf ortsangabe oder ähnliches. nichts was irgendwie hilfreich ist.

    Sry, den Satz verstehe ich nicht ...

    Wenn Du die Ergebnisse aus der Seite auslesen willst, so hast Du grundsätzlich 2 Möglichkeiten:
    - Abruf der Seite mit httpWebRequest, auslesen der Informationen mit Regex
    - Abruf der Seite mit WebBrowser, auslesen der Informationen mit HTMLDocument Methoden oder halt auch mit Regex

    Wenn Du mit Ergebnissen die Abfahrts-/Ankunftszeiten , Dauer etc meinst, so stehen die im HTML-Quellcode alle in einem div Tag mit der class="resultDep". Also je nachdem welche Ergebnisse Du auslesen möchtest, musst Du entsprechende Regex-Patterns erstellen oder mit der Funktion .GetElementsByTagname alle DIV Elemente holen und auf das Attribut class="resultDep" überprüfen.
    mit ergebnisse meine ich die suchergebnisse(die verbindungen). und mit "keinerlei hinweise" meine ich die url, bei google.de kannst du ja den suchbegriff auch sehen und auch über die url ändern.
    aber ich möchte ja quasi textfelder mit daten füttern, sprich textbox1=start, textbox2=ziel.....
    diese möchte ich dann weitergeben und die ergebnisse in meinem programm wiedergeben. muss aber nicht in einem webbrowser seien falls, man die ergebnisse pro verbindung in listboxen wiedergeben könnte.
    sprich ich sende und empfange von bahn.de, aber lasse alles nur in meinem programm anzeigen.

    dbsystel schrieb:

    mit ergebnisse meine ich die suchergebnisse(die verbindungen). und mit "keinerlei hinweise" meine ich die url, bei google.de kannst du ja den suchbegriff auch sehen und auch über die url ändern.

    Hattest Du oben nicht geschrieben die Auskunft würde schon ganz gut klappen ? Ich habe so das Gefühl Du bringst noch nicht so ganz die Voraussetzungen mit, um ein solches Projekt überhaupt anzufangen. HTTP kennt prinzipiell 2 Methoden um Argumente ( wie Start und Zielort) zu übertragen:
    - GET: die Argumente werden mmit Fragezeichen an die URL angehängt und dem WebServer geschickt
    - POST: die Argumente werden als eigener Request an den Server geschickt, in der URL ist nichts sichtbar

    Bei der Bahnauskunft werden die Argumente wie auch bei den meisten LogIns mit der POST-Methode übertragen. Mehr dazu hier.

    Wenn Du die Felder in der Webseite füllen willst, so musst Du Dich aber wohl oder übel mit HTML auseinandersetzen müssen, insbesonder den Formularen . Die werden mit einem FORM-Tag eingeleitet und beinhalten INPUT Elemente, die Du ausfüllen kannst/musst.

    Wenn Du das per WebBrowser Control machen willst, so wirst Du Dich definitiv mal mit den HTMLDocument Klasse auseinandersetzen müssen, welches Methoden und Eigenschaften mitbringt die es Dir einfacher machen HTML-Elemente zu suchen und zu ändern. So auch z.B. die INPUT-Elemente eines Formulars zu füllen und mit SUBMIT abzuschicken.

    Da alle INPUT-Felder Deiner Bahnseite eine eindeutige ID haben, so hilft Di eventuell das Tutorial Login auf einer Webseite etwas weiter.

    Hoffe die Links geben Dir etwas mehr Informationen zum Verständnis und Einarbeitung, C&P Code wirst Du von mir nicht bekommen, zumindest nicht bevor Du Dich mal in die o.g. Gebiete eingearbeitet hast. Fragen zum Verständnis kannst Du natürlich gerne stellen, sofern man merkt dass Du Deine Hausaufgaben gemacht hast.
    hättest du vllt. zeit und lust, für mich im quelltext nach der start+ziel id zu suchen, weil ich erkenne zwar viel aber leider nicht das was für mich wichtig ist. ich kann erkennen wo das datum ist und die reisendenanzahl, aber irgendwie nicht start ziel.
    währe echt super nett.
    danke :thumbsup:

    Edit1: P.S. Ich habe mich eingearbeitet, zumindest das was ich brauche, aber der quelltext ist dann doch noch ne nummer zu hoch. aber was du verlinkt hast, habe ich alles gelesen und schon im test programm umgesetzt. an einer leichten homepage!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dbsystel“ ()

    Da brauche ich nicht lange zu suchen, veränderbar sind eh nur INPUT-Elemente die nicht das Attribut hidden haben:

    Quellcode

    1. ' Ziel
    2. <input type="text" name="REQ0JourneyStopsZ0G" id="locZ0" value="Kevelaer" style="width:px;" maxlength="60" />
    3. ...
    4. ' Start
    5. <input type="text" name="REQ0JourneyStopsS0G" id="locS0" value="Kreuztal" style="width:px;" maxlength="60" />


    Wie Du siehst haben beide auch freundlicherweise eine eindeutige ID ;)
    danke, ich bin so ein trottel!!!! ich hab die ids auf einer leeren suchmaske gesucht. und noch ne frage: wie such ich mir denn die buttons raus?
    hast du denn auch noch ein tutorial oder ähnliches wie die verbindungsergebnisse bzw. den unteren abschnitt der seite, in meinem programm anzeigen kann. weil ich möchte ja nicht die seite angezeigt haben, sondern die ergebnisse ja als listbox elemente oder ähnliches anzeigen lassen können!
    aber fürs andere erstmal vielen vielen dank. :thumbup: :thumbup:
    ich meine den Suche Starten Button. ich hab den auch gefunden nur finde ich leider keine dazu passende id. Und auch das ändern der uhrzeit und des datums klappt nicht. ich kann zwar per button über ne textbox den inhalt im aktuell geöffneten fenster ändern, aber bei der suche wird das leider nicht geändert. woran kann das liegen?
    Hier mal der Code:

    VB.NET-Quellcode

    1. WebBrowser1.Document.GetElementById("locS0").InnerText = TextBox1.Text 'Abfahrt - z.B. Köln Hbf.'
    2. WebBrowser1.Document.GetElementById("locZ0").InnerText = TextBox2.Text 'Ankunft - z.B. Mannheim HBf.'
    3. WebBrowser1.Document.GetElementById("date0").InnerText = TextBox3.Text 'Datum - 21.01.2011'
    4. WebBrowser1.Document.GetElementById(*Such-Button????*).InvokeMember("click")


    Das Datum wird dann im aktuellen Fenster geändert, nur im Ergebniss-Fenster steht dann das aktuelle Datum und nicht meins!
    Also mein Code sieht jetzt so aus:

    VB.NET-Quellcode

    1. WebBrowser1.Document.GetElementById("date0").SetAttribute("value", TextBox3.Text)

    aber ohne den suchen button kann ich das nicht testen, weil wenn ich refresh oder update mache, wird die seite ja komplett neu geladen, oder zu mindest bei bahn.de.
    und auch wenn ich mir die links durchlese, bringt mich das auch nicht weiter, weil ich im quelltext den button finde, aber nichts womit ich ihn identifitieren könnte.(glaube ich zumindest).

    p.s ich will jetzt aber auch nicht die komplette html funktion erlernen, weil ich html eig. nur für diese aufgabe brauche, sprich wenn ich den suchen button hätte, bin ich quasi fertig, weil ich für die ergebniss seite eine lösung gefunden habe

    Datumsfehler gefunden:
    nicht "date0" sondern "REQ0JourneyDate"

    VB.NET-Quellcode

    1. WebBrowser1.Document.GetElementById("REQ0JourneyDate").SetAttribute("value", TextBox3.Text)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dbsystel“ ()

    habe durch bisschen ausprobieren und durch eure tatkräftige hilfe es geschafft, den button zu klicken und das datum auch. nur wie kann ich denn die optionen, sprich checkbox "checked" einstellen. und vorallem dingen wie kann ich die listbox auswählen, da wo die ermäßigungen drin sind! das ist jetzt noch mein größtes problem aber alles andere klappt jetzt.

    dbsystel schrieb:

    habe durch bisschen ausprobieren und durch eure tatkräftige hilfe es geschafft, den button zu klicken und das datum auch

    Dann poste doch diesen Code einmal für andere .

    dbsystel schrieb:

    nur wie kann ich denn die optionen, sprich checkbox "checked" einstellen.

    Eine Checkbox hat auf jeden Fall ein Attribut Checked: wenn dieses den Wert "checked" hat so ist es angekreuzt ...

    dbsystel schrieb:

    wie kann ich die listbox auswählen, da wo die ermäßigungen drin sind!

    sehe keine