Forum: PC-Programmierung Welche Sprache um Webseiten zu verarbeiten (auszuwerten)


von Thomas (Gast)


Lesenswert?

Hallo Leute,

ich möchte aus bestimmten Webseiten regelmäßig Daten extrahieren (genau: 
Börsenkurse zu bestimmten Tageszeiten) und diese Daten in Textform auf 
der Festplatte speichern.

Ich habe bis jetzt allerdings nur sehr hardwarenah programmiert 
(Assembler für verschiedene Mikrocontroller). Habe dort zwar 
fortgeschrittene Kenntnisse, die helfen mir jedoch bei der oben 
genannten Aufgabe wenig.

Ich suche nun eine Sprache, mit der ich diese Aufgabe lösen kann.

Am liebsten würde ich es als Script auf einem Linux-Internetrouter 
(fli4l) laufen lassen, dann müsste kein zusätzlicher Rechner dafür in 
Betrieb sein.

Grob teilt sich die Aufgabe in folgende Teilaufgaben:

A) Webseite einlesen und in einem String speichern
B) Position im String finden und Wert auslesen
C) Wert in Datei speichern (an bestehende Datei anhängen)

Und das zyklisch alle paar Minuten.

Hier im Forum bin ich über ein ähnliches Problem gestolpert, bei dem 
Phyton als Sprache vorgeschlagen wurde.

Was haltet ihr davon? Gibt es alternative Sprachen, die ich mir 
anschauen sollte (habt ihr evtl. Beispiel-Links)? Würde ich es auch als 
Skript auf meinem Router zum Laufen bringen können?

Ein paar Schubser in die richtige Richtung wären nett!

Danke,
Thomas

von Chris K. (chrisk86)


Lesenswert?

Wenn du auf dem Gerät einen Webserver laufen hast, könntest du PHP + 
Cronjob verwenden. Ist dann sehr einfach, Webseiten mit regulären 
Ausdrücken (regex) auszuwerten...

von Sachich N. (dude) Benutzerseite


Lesenswert?

PERL ftw, ohne deinen Text gelesen zu haben

von Thomas (Gast)


Lesenswert?

@Chrisk86

Cron ist auf dem Router vorhanden, jedoch kein Webserver, also auch kein 
PHP. Einzige Möglichkeit für den Router wären Shell-Skripte.

Gruß,
Thomas

von Chris K. (chrisk86)


Lesenswert?

Thomas wrote:
> Einzige Möglichkeit für den Router wären Shell-Skripte.

Dabei kann ich dir leider nicht helfen. Kenne mich nicht gut genug damit 
aus...

Chris

von Mark B. (markbrandis)


Lesenswert?

Perl?

von Sven P. (Gast)


Lesenswert?

PHP hat doch nix mit Webserver zu tun. Das kann man genauso benutzen, 
wie Shellskripte auch.

Perl ist PRÄDESTINIERT für sowas... ist ja auch eine 'practical 
extraction and reporting language'.

Shellskripte wäre quasi Selbstmord, wobei man da eigentlich auch mit AWK 
und Konsorten viel erreichen kann. Ist allerdings umständlich bei 
miserablen Webseiten, die sich nen Dreck um HTML scheren 
(...Reichelt...) und nie mal konsistent daherkommen.

Python geht auch, Ruby auch... gehen eigentlich alle, guck mal, was da 
ist. Ihre Macken haben sie alle :-)

von Tim (Gast)


Lesenswert?

Nimmst du Perl und das Mechanize Modul.
Das ist ein Webbrowser den man mit Perl steuern kann.
Für den Rest einfach regex benutzen :-)

http://search.cpan.org/~petdance/WWW-Mechanize-1.54/lib/WWW/Mechanize.pm

von hmm (Gast)


Lesenswert?

Nein, das ist eine Clientanwendung, die auf einer Windows muehle laufen 
kann. Ich wuerde eine Sprache waehlen, die die Infrastruktur bietet. 
Eine TCP Socket Verbindung zu einem http:// Server, plus etwas String 
verarbeitung. Da passt Delphi wunderbar.

von Sven P. (Gast)


Lesenswert?

hmm wrote:
> Nein, das ist eine Clientanwendung, die auf einer Windows muehle laufen
> kann. Ich wuerde eine Sprache waehlen, die die Infrastruktur bietet.
> Eine TCP Socket Verbindung zu einem http:// Server, plus etwas String
> verarbeitung. Da passt Delphi wunderbar.

???
PHP, Perl, Ruby und Python bieten allesamt sowohl direkten 
Netzwerkzugriff als auch eine höhere Ebene, wie etwa CURL. Selbst in 
Shellskripten kann man CURL problemlos benutzen.

von hownottobeseen (Gast)


Lesenswert?

soweit ich weiß, gibt es nicht nur einen Webdienst, der Börsenkurse als 
XML liefert. Wozu also HTML zu Fuß auswerten, wenn man alles schon ein 
Reinform bekommt ;)

von Tom (Gast)


Lesenswert?

Hallo Thomas,

sowas geht auch in einem bash-Script mit curl (oder wget), grep, date 
und sed, falls selbige mit fli4l laufen. Bei sed braucht man etwas 
Fantasie und viel trial&error, bei Websiten, deren Struktur sich nicht 
ändert (ein paar Daten in Tabelle etc.), funktioniert das IME 
zuverlässig.

Minimalbeispiel:
1
#!/bin/bash
2
3
4
WEBSITE="http://www.ariva.de/boersenkurse.m"
5
outfile="DeutscheBank.txt"
6
7
datum="$(date)"
8
kurs="$( curl "$WEBSITE" | \
9
                grep -A 2 "Deutsche Bank"  | \
10
                tail -n1  | \
11
                sed -e 's/.*"right">//' -e 's/ €.*//'\
12
                )"
13
echo "$datum -----> $kurs" >> "$outfile"

von faustian (Gast)


Lesenswert?

Um es nochmal hervorzuheben: awk . Wenn kein Perl auf dem Router 
greifbar ist, ist ein awk wahrscheinlich immerhin da, oder mit 
akzeptablem aufwand dort installierbar.

von Thomas (Gast)


Lesenswert?

Auf dem Router läuft Busybox, allerdings ohne "awk" (nur mit "sed"). Ich 
werde von daher Tom's Minimalbeispiel als Basis nehmen, "curl" gegen 
"wget" tauschen und mal schauen, ob ich es damit gebacken bekomme. Bin 
da recht zuversichtlich.

Ist halt praktischer, wenn ein Skript direkt auf dem Router läuft und 
ich mir nur die Ergebnisse bei Bedarf auf einen (beliebigen) 
Arbeitsrechner holen kann.

Vielen Dank für die zahlreichen Kommentare.

Gruß,
Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.