www.mikrocontroller.net

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


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris K. (chrisk86)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PERL ftw, ohne deinen Text gelesen zu haben

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris K. (chrisk86)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Perl?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.5...

Autor: hmm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hownottobeseen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#!/bin/bash


WEBSITE="http://www.ariva.de/boersenkurse.m"
outfile="DeutscheBank.txt"

datum="$(date)"
kurs="$( curl "$WEBSITE" | \
                grep -A 2 "Deutsche Bank"  | \
                tail -n1  | \
                sed -e 's/.*"right">//' -e 's/ €.*//'\
                )"
echo "$datum -----> $kurs" >> "$outfile"


Autor: faustian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.