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
Mit curl und grep/awk/sed auf der Konsole. Weiteres in den Manualseiten :-)
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
ganz ehrlich...ich bin Anfänger und die meisten kleineren Tools programmiere ich in freebasic oder visualbasic.
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.
Haben diese Basic-Dialekte keine sockets, xml/html parser und dergleichen? Ev. als Zusatzmodule/Libraries? -> google weiss fast alles. ;)
Hi, selbst das alte VB6 (Pro) hat doch Sockets und auch ein Browserelement. Gruss Klaus
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.
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.
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.
Billigvariante:
1 | curl "http://www.berlin.de/wetter/" 2>/dev/null | grep 'class="temperatur"' | sed 's/.*<a>//' | sed 's/<.*//' |
ich verstehe es zwar nicht werde es aber ausprobieren :-) Danke
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 ;-)
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
Mark Brandis schrieb: > Ja und mit /dev/null wird's da auch bissl schwierig ;-) nein sogar einfacher: NUL ist doch viel kürzer.
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
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 ;)
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
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.
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
Eine Frage zum letzten Beitrag von "Bastler (Gast) ". GNU = Linux ... oder ? Das heisst dein toller tipp geht nicht in Windows ? Gruss Klaus
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)
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.
Wenn man auf die Quelle per HTTP zugreifen kann, brauch man übrigens wget nicht! (Habs jetzt nicht probiert)
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.
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?
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 :)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.