bahnpreise mittels python ermitteln

Gast #7074833
Lesenswert?

Hi,
ich versuche mit python über requests die Preise zu ermitteln.
Die Vorlage habe ich von
https://nickyreinert.de/blog/2020/09/09/das-ticket-preis-system-der-deutschen-bahn-oder-wie-findest-du-den-optimalen-fahrschein-preis/

Da habe ich bei verschiedenen Vorgehen verschiedene Probleme:

1) Preise über reiseauskunft
1
url = "http://reiseauskunft.bahn.de/bin/query.exe/dn"
2
r = requests.get(url=urlReiseauskunft, params=payload)
3
print('Status Code: ', r.status_code)
4
print('URL: ', r.url)
5
#print(r.content)
6
#print(r.text)
7
with open('bahn.html','w') as f:
8
    f.write(r.text)

wenn ich eines von
1
print(r.content)
2
print(r.text)
einkommentiere, bekomme ich den Fehler:

    print(r.content)
                    ^
IndentationError: unindent does not match any outer indentation level

was ist daran falsch?
der status_code ist 200 und die URL wird mir auch richtig ausgegeben.
Wenn ich bahn.html öffne, bekomme ich die richtige seite dargestellt und 
die url führt mich auch zur richtigen seite.
Wie kann ihc mir den Text denn direkt in der konsole ausgeben?

Hintergrund ist, dass ich den Text parsen möchte, um an weitere 
Parameter zu kommen.

2 Möglichkeit über den Sparpreisfinder.
Hier sollte es auch mittels JSON funktionieren
1
data = '{"startSucheSofort":true,"startBhfName":"BERLIN","startBhfId":"00809603","startBhfLocType":"1","zielBhfName":"Stuttgart Hbf","zielBhfId":"008000096","zielBhfLocType":"1","schnelleVerbindungen":true,"klasse":"2","tripType":"return","datumHin":"' + start_date + '","sliderHinMin":"0000","sliderHinMax":"1440","datumRueck":"' + back_date + '","sliderRueckMin":"0000","sliderRueckMax":"1440","travellers":[{"typ":"E","bc":"0"}]}'
2

3
url = 'https://ps.bahn.de/preissuche/preissuche/psc_start.post?country=DEU&lang=de&dbkanal_007=L01_S01_D001_KIN0001_qf-sparpreis-svb-kl2_lz03&ps=1&psc-anfragedata-json='+dat
4

5
r = requests.get(url=url)
6
print('Status Code: ', r.status_code)
7
print('URL: ', r.url)
8
with open('bahn.html','w') as f:
9
    f.write(r.text)
aber wie komme ich hier an die json datei?

Als URL wird mir immer
https://reiseauskunft.bahn.de/bin/query.exe/dn?tbpMode=1&date=%2B1&getstop=1 
ausgegeben
Gast #7075748
Lesenswert?

Εrnst B. schrieb:
> Lars schrieb:
>> was ist daran falsch?
>
> in Python ist die Code-Formatierung wichtig. Du hast eine falsche Anzahl
> an Leerzeichen am Zeilenanfang.

Sollte man nicht, wenn man eine Programiersprache benutzt. zumindest ein 
paar Basics dieser Sprache kennen?
Und das Einrücken steht doch schon im ersten Abschnitt in der Wikipedia:

https://de.wikipedia.org/wiki/Python_(Programmiersprache)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren