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


von poljot (Gast)


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

von Sven P. (Gast)


Lesenswert?

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

von poljot (Gast)


Lesenswert?

..unter Windows bitte.
was ist CURL?

von ernst (Gast)


Lesenswert?

poljot schrieb:

> ..unter Windows bitte.

Was ist Windows?

von Sam .. (sam1994)


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

von poljot (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


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-ssl-sspi-zlib-static-bin-w32.zip

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

von programmierer (Gast)


Lesenswert?

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

von Klaus D. (kolisson)


Lesenswert?

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

Gruss Klaus

von Sam .. (sam1994)


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.

von Verwirrter Anfänger (Gast)


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.

von poljot (Gast)


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.

von Sven P. (Gast)


Lesenswert?

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

von poljot (Gast)


Lesenswert?

ich verstehe es zwar nicht werde es aber ausprobieren :-)

Danke

von Mark B. (markbrandis)


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 ;-)

von Sam .. (sam1994)


Lesenswert?

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

* = Anführungszeichen
: = <
; = >

verdammt warum kann man kein html posten

von Peter (Gast)


Lesenswert?

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

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

von Rudi (Gast)


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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Rudi schrieb:
> Schafft Ihr das, danke
http://www.ls-d.de/typo3conf/ext/skt_quotes/chart.php?1296837596404
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 ;)

von Patrick (Gast)


Lesenswert?

1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
import urllib
5
from BeautifulSoup import BeautifulSoup
6
7
url = urllib.urlopen('http://www.berlin.de/wetter/')
8
website = url.read()
9
url.close
10
11
soup = BeautifulSoup(website)
12
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/download/3.x/BeautifulSoup-3.2.0.tar.gz

Grüße Patrick

von Bastler (Gast)


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)
1
@echo off
2
wget.exe http://www.ls-d.de/typo3conf/ext/skt_quotes/chart.php -O chart.png -q
3
tesseract.exe chart.png chart
4
del chart.png
5
set /p str= < chart.txt
6
echo %date% %time% %str% >>log.txt
7
set str
8
del chart.txt

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

Verwendung auf eigene Gefahr usw.

von rudi (Gast)


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

von Klaus D. (kolisson)


Lesenswert?

Eine Frage zum letzten Beitrag von "Bastler (Gast) ".

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

Gruss Klaus

von Läubi .. (laeubi) Benutzerseite


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)

von Bastler (Gast)


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.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

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

von Abdul K. (ehydra) Benutzerseite


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.

von Läubi .. (laeubi) Benutzerseite


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?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ha hach ha Läubi. Der war gut.

von daniel(root) (Gast)


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 :)

von Jens (Gast)


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

von Sam .. (sam1994)


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).

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.