JavaScript auswerten

Gast #4022747
Lesenswert?

Ich möchte prinzipiell Daten von dieser Webseite in Variablen speichern.

Das Ergebnis wäre also etwas wie Variable Wert1 hat den Wert 324.09.

Ich möchte das gerne in Python, AppleScript oder Shell (Mac) machen. 
Meinetwegen auch über PHP, wenn das überhaupt geht.

Hat jemand eine Idee wie ich dieses JavaScript lesen und weiter 
verarbeiten kann?

Danke
1
<html>
2
  <head>
3
  </head>
4
  <body>   
5
    <script>
6
        document.write("Wert1: 324.09" );
7
    </script>
8
        <br>
9
    <script>
10
        document.write("Wert32: 4325");
11
    </script>
12
        <br>
13
    <script>
14
        document.write("Wert33: 734");
15
    </script>
16
        <br>
17
    <script>
18
        document.write("Wert9: 5342");
19
    </script> 
20
  </body>
21
</html>
Persönliche Seite #4022780
Lesenswert?

Das könnte in Python so aussehen:
1
from re import findall
2

3
script="""
4
<html>
5
  <head>
6
  </head>
7
  <body>   
8
    <script>
9
        document.write("Wert1: 324.09" );
10
    </script>
11
        <br>
12
    <script>
13
        document.write("Wert32: 4325");
14
    </script>
15
        <br>
16
    <script>
17
        document.write("Wert33: 734");
18
    </script>
19
        <br>
20
    <script>
21
        document.write("Wert9: 5342");
22
    </script> 
23
  </body>
24
</html>
25
"""
26

27
regex= r"(\w*): ([0-9|\.]*)?\""
28

29
results = findall(regex, script)
30

31
for i in results:
32
    print(i)

Geht aber so ähnlich in jeder beliebigen Programmiersprache, in der es 
reguläre Ausdrücke gibt.
Gast #4022783
Lesenswert?

Silvan König schrieb:
> Das könnte in Python so aussehen:

ich denke nicht das es wirklich die Lösung ist.

Schon wenn man schreibt

 document.write("PI=" + Math.PI);

versagt das script.


Ich würde vermutlich direkt den Browser nutzen, einfach in die Webseite 
noch ein extra Javascript einschleusen und dann mit dem JavaScript die 
fertige Seite Wieder auslesen und an einen Server schicken.
#4023412
Lesenswert?

Ich gebe es offen zu: Ich habe immer noch nicht so recht verstanden, was 
er denn nun eigentlich machen will.

Was sind die Eingangsdaten? In welcher Form genau liegen diese vor? Was 
soll das Ergebnis sein?

Am besten zurück auf Los, keine 4000 einziehen, und nochmal von vorn das 
Ganze. ;-)
Gast #4024955
Lesenswert?

Ich geb's ja zu, ich war selber nicht so sicher was ich genau machen 
will.

Es handelt sich um ein umfangreiches Script, das Werte berechnet und 
diese über eine Webseite ausgibt. document.write()

Ich brauche nur die Werte, deshalb habe ich nun eine weitere Variante 
ohne HTML angeschaut: JSC

Damit kann ich den JS Code direct ausführen ohne HTML. Nun habe ich aber 
das Problem, dass document.write nicht unterstützt wird.

Wie kann ich das Ergebnis nun im Shell ausgegeben?
Gast #4024979
Lesenswert?

Hi louis,

louis schrieb:
> Ich geb's ja zu, ich war selber nicht so sicher was ich genau
> machen
> will.
>
> Es handelt sich um ein umfangreiches Script, das Werte berechnet und
> diese über eine Webseite ausgibt. document.write()
>
> Ich brauche nur die Werte, deshalb habe ich nun eine weitere Variante
> ohne HTML angeschaut: JSC
>
> Damit kann ich den JS Code direct ausführen ohne HTML. Nun habe ich aber
> das Problem, dass document.write nicht unterstützt wird.

Ich kenne mich mit JSC nicht aus, aber vielleicht kannst Du eine eigene 
"document"-Klasse mit einer Methode "write()" schreiben? Das Teil muß ja 
nicht mehr können, als die einzelnen Aufrufe der write()-Methode in ein 
Array zu speichern.

HTH,
Karl
Gast #4025009
Lesenswert?

Danke, mit print() klappt die Ausgabe im Shell.

Was ich nicht verstehe ist, was dieser Code macht:
1
// export as AMD module / Node module / browser variable
2
if (typeof define === 'function' && define.amd) define(SunCalc);
3
else if (typeof module !== 'undefined') module.exports = SunCalc;
4
else window.SunCalc = SunCalc;

window.SunCalc versteht JSC nicht und bricht deswegen ab. Ich würde den 
Code deshalb gerne mit etwas kompatiblen ersetzen.
Gast #4025030
Lesenswert?

louis schrieb:
> Was ich nicht verstehe ist, was dieser Code macht:

Kompatibilitäts Boilerplate Copy&Paste snippet, damit derselbe JS-Code 
sowohl client-Seitig (also im Browser) als auch Server-Seitig (z.B. mit 
node.js) laufen kann.

Wenn das Modul deine ganze Berechnung macht:
Nimm gleich node.js und mach die Berechnung darin, ganz ohne virtuelle 
Webbrowser und anderes gehackse.
Gast #4025039
Lesenswert?

Falls möglich würde ich gerne auf zusätzliche Software verzichten. Kann 
ich den Code denn nicht irgendwie ersetzen? Der ganze Rest funktioniert 
ja, es gibt lediglich kein Fenster auf das referenziert werden kann.

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