curl und javascript

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich möchte aus der Konsole heraus mit curl ein Ergebnis aus einer Website quetschen, der relevante Quelltext der Seite sieht so aus:

    Code
    <FORM NAME="FormName">
    <INPUT TYPE="button" VALUE="AKTUELLE ZEIT BENUTZEN" ONCLICK="InitDate(this.form); Compute(this.form);">
    <TR><TD>Ergebnis</TD><TD> <INPUT TYPE="text"  NAME="Ausgabe" SIZE=23> Uhr</TD></TR>
    </FORM>
    <SCRIPT LANGUAGE="JavaScript">
      Init(document.Script);
      Compute(document.Script);
    </SCRIPT>
    <script type="application/ld+json">

    Den ganzen Quellcode zu posten sprengt hier wahrscheinlich den Rahmen (>1500 Zeilen), könnte ich aber auch, falls nötig.

    Wie muss ich jetzt mit curl den Aufruf starten, damit ich die von der Website berechneten Daten bekomme ?

    Erste Ansätze, wie das gehen könnte habe ich hier mit curl --data gefunden, komme damit aber auch nicht weiter.

    :helpnew:

  • fred0815 Relevant ist der Teil nur in sofern, dass man da sieht das zwei JavaScript-Funktionsaufrufe zu sehen sind von denen wird nicht wissen was die machen. Falls die das Ergebnis ermitteln/berechnen das Du haben willst, kannst Du da mit ``curl`` nicht so viel machen, denn das ist kein Browser und führt kein JavaScript aus.

    Ich sehe nicht wie da so pauschal ``--data`` helfen sollte. Damit legt man den Datenteil einer Anfrage fest, also zum Beispiel bei einer POST-Anfrage, was von Deiner Seite da an Daten an den Server übermittelt werden soll.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Hat sich schon erledigt, die Idee war von Anfang an blöd, weil der Pi Zero viel zu wenig RAM hat.

    Ich habs jetzt mit astral gelöst, das läuft auch offline:

  • Anmerkungen zum Quelltext: `sun` wird importiert, aber nicht verwendet.

    `stadt` wird in der Schleife jedes mal mit dem gleichen Wert definiert, das wäre besser vor Schleife aufgehoben.

    `strftime()` liefert bereits eine Zeichenkette, da braucht man nicht noch mal `str()`. Selbst wenn es keine Zeichenkette liefern würde bräuchte man kein `str()` weil `format()` dass dann in eine Zeichenkette umwandeln würde.

    Es wird drei mal fast das gleiche gemacht, wobei jedes mal ein Wert doppelt ermittelt/berechnet wird um ihn einmal per `print()` auszugeben und einmal in eine Datei zu schreiben. Insbesondere bei `now()` kann so etwas auch zu Problemen führen, weil zwischen den beiden Aufrufen von `now()` Zeit vergeht, und damit nicht das gleiche Ergebnis dabei heraus kommt, selbst wenn man es dann auf ganze Sekunden ”beschneidet”.

    `zeit` ist kein guter Name für eine Datei und `a` und `z` schon gar nicht.

    Ungetestet:

    `sleep()` ist etwas ungenau und damit bekommt man wahrscheinlich eine Messreihe bei der sich die Messzeitpunkte immer ein bisschen verschieben. Besser wäre das `sched`-Modul aus der Standardbibiothek oder etwas externes wie `APScheduler`.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Ohne die Imports meckert er aber:

    Code
    Breite: 48.03, Länge: 7.82
    Bye bye
    Traceback (most recent call last):
      File "/home/pi/./sunrise_offline_02.py", line 44, in <module>
        main()
      File "/home/pi/./sunrise_offline_02.py", line 28, in main
        azimut = sun.azimuth(stadt.observer)
    AttributeError: 'function' object has no attribute 'azimuth'

    EDIT: Ne, er meckert auch mit. :lol:

    So läufts wieder:

    Ausgabe:

    Code
    Breite: 48.03, Länge: 7.82
    Es ist 12:57:03 Uhr
    Azimut: 172.59
    Zenit: 49.98
    ^CAbbruch durch Benutzer.
    Bye bye
  • Ja, dann klappt auch so:

    Ausgabe:

    Code
    Breite: 48.03, Länge: 7.82
    Es ist 13:11:38 Uhr
    Azimut: 177.35
    Zenit: 49.77

    :bravo2:

    EDIT: Hätte ja schon lange in ein neues Thema gehört, hat ja nichts mehr mit curl und javascript zu tun. :daumendreh2:

  • Letztlich haben die beiden Funktionen aus `astral.sun` das gleiche Problem wie das mehrfache Aufrufen von `now()` — genau das tun die nämlich selbst noch mal. Der *eine* Zeitpunkt sollte also von aussen übergeben werden. Ausserdem gibt es eine Funktion die gleich beides berechnet. Die wird auch von `zenith()` und `azimuth()` aufgerufen, da wird also beides berechnet und eines davon weg geworfen.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!