mikrocontroller.net

Forum: PC-Programmierung Webseite parsen und Wert auslesen, wie geht das?


Autor: poljot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte aus einer fremden Webseite einen Wert auslesen. z.B. auf der 
Webseite wird eine Temperatur dargestellt, diese will ich mit einem 
Programm auslesen und diesen wert weiter verwenden.
Wie mache ich das?

Danke
poljot

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit curl und grep/awk/sed auf der Konsole. Weiteres in den Manualseiten 
:-)

Autor: poljot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..unter Windows bitte.
was ist CURL?

Autor: ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poljot schrieb:

> ..unter Windows bitte.

Was ist Windows?

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Sprache?

Unter .Net gibt es den WebClient, mit dem geht es sehr einfach.

poljot schrieb:
> was ist CURL?

WEiß auch grad nicht. Ich schätze ein Interpretersprache. Musst mal 
googlen:
http://google.de/search?q=CURL

Autor: poljot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ganz ehrlich...ich bin Anfänger und die meisten kleineren Tools 
programmiere ich in freebasic oder visualbasic.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poljot schrieb:
> was ist CURL?

Curl ist ein Kommandozeilentool, das man sehr wohl auch unter Windows 
einsetzen kann:

http://curl.haxx.se/
http://www.gknw.net/mirror/curl/win32/curl-7.21.3-...

Damit kann man Webinhalte herunterladen, die man dann mit welchen 
Mitteln auch immer inhaltlich analysieren kann.

Autor: programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haben diese Basic-Dialekte keine sockets, xml/html parser und 
dergleichen? Ev. als Zusatzmodule/Libraries? -> google weiss fast alles. 
;)

Autor: Klaus De lisson (kolisson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
selbst das alte VB6 (Pro) hat doch Sockets und auch ein Browserelement.

Gruss Klaus

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den WebClient gibts auch sicher in VB. Einfach WebSeite als string 
Downloaden und die Position durch suchen einer bestimmten Zeichenfolge 
ausfindig machen. Musst halt in den Quellcode deiner WEbseite 
reinschauen.

Autor: Verwirrter Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grundsätzliche Vorgangsweise:

1. Webseite in einem String oder eine Datei laden
2.
- Entweder Webseite mithilfe von Stringfunktionen so lange ausseinander 
schneiden, bis nur noch der Wert übrig bleibt
- Oder mit Hilfe von Regular Expressions den Wert suchen und matchen
- oder mit Hilfe eines DOM / XML parsers die Webseite einlesen und den 
entsprechenden Knoten auslesen

Alternativ:
Gucken ob die Informationen auf bessere WEise zu kriegen sind (RSS Feed, 
JSON, etc)

Ich würde für sowas mal grob Python oder Perl empfehlen, geht aber 
theoretisch mit allem vom Assembler über C, Java bis hin zu einzelnen 
Programmen, die mit einer Shell sprache zusammengeklebt werden.

Autor: poljot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, schon mal Danke für eure Hilfe, hier konkret ein Beispiel:

Die Webseite:
http://www.berlin.de/wetter/

hier findet man mittig die aktuelle Temperatur und ein Stückchen weiter 
unten die min/max Temp.

Ich möchte jetzt die Min/max Temperatur auslesen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Billigvariante:
curl "http://www.berlin.de/wetter/" 2>/dev/null | grep  'class="temperatur"' | sed 's/.*<a>//' | sed 's/<.*//'

Autor: poljot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich verstehe es zwar nicht werde es aber ausprobieren :-)

Danke

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um die Programme grep und sed unter Windows zu nutzen, brauchst Du 
wiederum MinGW bzw. MSYS: http://www.mingw.org/wiki/msys

Ja und mit /dev/null wird's da auch bissl schwierig ;-)

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würd die Webseite downloaden (WebClient)
und nach dem Teil Suchen:
:li class=*temperatur*;:a;6 °C:/a;:/li;
                  :li class=*status*;Regen:/li;

* = Anführungszeichen
: = <
; = >

verdammt warum kann man kein html posten

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Brandis schrieb:
> Ja und mit /dev/null wird's da auch bissl schwierig ;-)

nein sogar einfacher: NUL ist doch viel kürzer.

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

interessantes Thema, wollte ich auch schon öfters mal ausprobieren.
Und zwar hier den DAX Wert auslesen. Gleich links auf der Seite, der 
wird alle 15 Sekunden (oder so) aktualisiert.
Aber irgendwie kriege ich den Wert nicht raus.

Hier die Internetseite.
http://www.ls-d.de/Home.8.0.html

Schafft Ihr das, danke

Rudi

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi schrieb:
> Schafft Ihr das, danke
http://www.ls-d.de/typo3conf/ext/skt_quotes/chart....
Einfach beliebig oft neuladen Zahl hinten sollte sich ändern oder Cache 
deaktivieren.

> Aber irgendwie kriege ich den Wert nicht raus.
Da das ganze ein Bild ist wirst du da wohl eine Art OCR drauf loslassen 
müssen ;)

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
from BeautifulSoup import BeautifulSoup

url = urllib.urlopen('http://www.berlin.de/wetter/')
website = url.read()
url.close

soup = BeautifulSoup(website)
print soup('li', { 'class' : 'temperatur' },'a')[0].text

Ein funktionierender Python-Code der ausschließlich die Temperatur 
ausgibt. Im gleichen Verzeichnis muss dann nur noch die Datei 
BeautfulSoup.py liegen. Ist hier verfügbar:

http://www.crummy.com/software/BeautifulSoup/downl...

Grüße Patrick

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi schrieb:
> Hallo Zusammen,
>
> interessantes Thema, wollte ich auch schon öfters mal ausprobieren.
> Und zwar hier den DAX Wert auslesen. Gleich links auf der Seite, der
> wird alle 15 Sekunden (oder so) aktualisiert.
> Aber irgendwie kriege ich den Wert nicht raus.
>
> Hier die Internetseite.
> http://www.ls-d.de/Home.8.0.html
>
> Schafft Ihr das, danke
>
> Rudi

Ihr habt es gewollt.

runterladen:
http://www.gnu.org/software/wget/
http://code.google.com/p/tesseract-ocr/

Pfade anpassen, als Textdatei speichern und Endung in .bat ändern, 
anschließend regelmäßig aufrufen (Taskplaner oder wie das heißt oder 
anderes Programm)
@echo off
wget.exe http://www.ls-d.de/typo3conf/ext/skt_quotes/chart.php -O chart.png -q
tesseract.exe chart.png chart
del chart.png
set /p str= < chart.txt
echo %date% %time% %str% >>log.txt
set str
del chart.txt

Wert wird in log.txt im Verzeichnis der .bat mit Datum und Uhrzeit 
protokolliert, Beispiel nach 4 Aufrufen:
04.02.2011 19:34:16,65 7216.25 
04.02.2011 19:36:33,96 7217.25 
04.02.2011 19:36:56,81 7217.25 
04.02.2011 19:40:01,64 7215.75 
Das lässt sich beliebig weiterverarbeiten.

Verwendung auf eigene Gefahr usw.

Autor: rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

super Jungs, ....danke für eure Hilfe, ....ich hätte noch 3 Jahre 
rumprobieren und googeln können, ....alleine hätte ich es nicht 
geschnallt!

Rudi

Autor: Klaus De lisson (kolisson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Frage zum letzten Beitrag von "Bastler (Gast) ".

GNU = Linux ...  oder ?
Das heisst dein toller tipp geht nicht in Windows ?

Gruss Klaus

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus De lisson schrieb:
> Eine Frage zum letzten Beitrag von "Bastler (Gast) ".
>
> GNU = Linux ...  oder ?
> Das heisst dein toller tipp geht nicht in Windows ?
>
> Gruss Klaus

wget exe und tesseract exe deuten wohl eher nicht auf linux, und 
warum sollte auch GNU = Linux gelten? Genauso könnte man sagen Mercedes 
= Aral ... (Marke beliebig gewählt)

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rudi schrieb:
> Hallo,
>
> super Jungs, ....danke für eure Hilfe, ....ich hätte noch 3 Jahre
> rumprobieren und googeln können, ....alleine hätte ich es nicht
> geschnallt!
>
> Rudi

Gerne. Da soll mal einer behaupten man braucht die Kommandozeile nicht 
mehr...

Klaus De lisson schrieb:
> Eine Frage zum letzten Beitrag von "Bastler (Gast) ".
>
> GNU = Linux ...  oder ?
> Das heisst dein toller tipp geht nicht in Windows ?
>
> Gruss Klaus

Nein, Nein, das Script ist ausschließlich für Windows! Die Programme 
gibts für beide Systeme. Wenn man also das Script für irgendeine 
Unix-Shell (ich kenne mich da überhaupt nicht aus) umbaut sollte es auch 
unter Linux funktionieren.

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man auf die Quelle per HTTP zugreifen kann, brauch man übrigens 
wget nicht! (Habs jetzt nicht probiert)

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, dieses OCR-Programm treibt einen ja in den Wahnsinn!! Habs jetzt 
zum Laufen gebracht. Aber etwas was ich absolut nicht rausfinde:

Wo sind die Kommandozeilen-Optionen beschrieben? z.B. wie man auf eine 
bestimmte Sprache auswählt.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abdul K. schrieb:
> Wo sind die Kommandozeilen-Optionen beschrieben? z.B. wie man auf eine
> bestimmte Sprache auswählt.

>> Where is the documentation?
>>> There isn't much. We are concentrating on features at the moment.
>>> There is some documentation at ....
http://code.google.com/p/tesseract-ocr/wiki/FAQ

Eventuell in den Source mal reinschauen?

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ha hach ha Läubi. Der war gut.

Autor: daniel(root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bastler schrieb:
> Nein, Nein, das Script ist ausschließlich für Windows!

und wie verkettet man die beiden Klick-Ereignise auf exe Programme :)

\spass-off

einfach cygwin herunterladen und die Skripte direkt
eintippen und ausprobieren*

*) ich weiss man kann wget.exe in cmd benutzen, aber
cmd ist so schrecklich :)

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poljot schrieb:
> freebasic oder visualbasic

Unter Visual Studio (VB2008 / 2010) geht es auch. Google mal nach 
"HttpWebRequest". Das dürfte dein Problem lösen. Die Funktionsaufrufe 
sind zwar für einen Anfänger nicht gerade trivial, aber doch zu 
beherrschen. Die weitere Vorgehensweise wurde bereits weiter oben 
beschrieben. Datei aus dem Web laden und quasi auseinandernehmen 
(Stringfunktionen).

Viel Erfolg

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens schrieb:
> Unter Visual Studio (VB2008 / 2010) geht es auch. Google mal nach
> "HttpWebRequest". Das dürfte dein Problem lösen. Die Funktionsaufrufe
> sind zwar für einen Anfänger nicht gerade trivial, aber doch zu
> beherrschen. Die weitere Vorgehensweise wurde bereits weiter oben
> beschrieben. Datei aus dem Web laden und quasi auseinandernehmen
> (Stringfunktionen).

HttpRequest hab ich auch schon benutzt, aber glaub mir Webclient ist 
deutlich einfacher. Nur wenn man beim Download noch Argumente übergeben 
muss, sollte man HttpRequest nehmen (das musste ich vor kurzem).

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.