75772
24.02.2009, aktualisiert um 16:05:41 Uhr
10010
6
0
AUs HTML Code einer Wetterseite Temperaturen oder Windrichtung auslesen - HTML bereits mit wget als txt gespeichert
habe einiges probiert. komme einfach nicht weiter und muss jetzt hier um hilfe bitten.
Hallo Zusammen,
vorgestern habe ich gedacht ich schaffs noch indem ich die verschiedenen anderen Probleme hier durchlese, aber hab leider nicht ganz das passende gefunden und kommt nicht voran mit meinem Problem.
Ich lade mir durch eine Batch datei und mittels wget die folgende HTML seite auf meine Festplatte: http://www.rssweather.com/wx/de/karlsruhe/wx.php
Die HTML seite wird in eine Txt datei kopiert, oder als txt abgespeichert.
Auf diesen Quellcode möchte ich zugreifen und die aktuelle Temperatur und später evtl auch WIndrichtung, Sonnenauf und Untergang auslesen. Es reicht wenn ich den Wert, sagen wir mal 6 (ohne Grad Celsius) mittels "echo >> c:\test.txt " abspeichern kann.
so habe ich mal angefangen, kam aber nicht weiter:
for /f "tokens=2,3* delims=: " %%i in ('findstr /L Temperature: "c:\wetter.txt"') do @echo %%i
vielleicht kann mir jemand einen tipp geben, Danke schonmal! Florian
Ausschnitt der wetter.txt
Hallo Zusammen,
vorgestern habe ich gedacht ich schaffs noch indem ich die verschiedenen anderen Probleme hier durchlese, aber hab leider nicht ganz das passende gefunden und kommt nicht voran mit meinem Problem.
Ich lade mir durch eine Batch datei und mittels wget die folgende HTML seite auf meine Festplatte: http://www.rssweather.com/wx/de/karlsruhe/wx.php
Die HTML seite wird in eine Txt datei kopiert, oder als txt abgespeichert.
Auf diesen Quellcode möchte ich zugreifen und die aktuelle Temperatur und später evtl auch WIndrichtung, Sonnenauf und Untergang auslesen. Es reicht wenn ich den Wert, sagen wir mal 6 (ohne Grad Celsius) mittels "echo >> c:\test.txt " abspeichern kann.
so habe ich mal angefangen, kam aber nicht weiter:
for /f "tokens=2,3* delims=: " %%i in ('findstr /L Temperature: "c:\wetter.txt"') do @echo %%i
vielleicht kann mir jemand einen tipp geben, Danke schonmal! Florian
Ausschnitt der wetter.txt
<div id="current">
<p class="summary"><img src="http://rssweather.cachefly.net/images/weather-symbols/mcloudy.png" alt="Mostly Cloudy weather icon" class="icon"/> Mostly Cloudy </p><p class="temp">Temperature: 6°C</p>
<dl class="summaryText">
<dt>Humidity:</dt><dd id="humidity">65%</dd>
<dt>Wind Speed:</dt><dd id="windspeed">10 KMH</dd> <dt>Wind Direction:</dt><dd id="winddir">N (360°)</dd>
<dt>Barometer:</dt><dd id="pressure"> 1025 mb </dd> <dt>Dewpoint:</dt><dd id="dewpoint">0°C</dd>
<dt>Heat Index:</dt><dd id="heatindex">6°C</dd>
<dt>Wind Chill:</dt><dd id="windchill">3°C</dd>
<dt>Visibility:</dt><dd id="visibility"> 11 km </dd>
<dt>Sunrise:</dt><dd>7:22 AM GMT+1</dd>
<dt>Sunset:</dt><dd>6:00 PM GMT+1</dd>
</dl>
<p class="time">Updated: 3:20 PM GMT+1 TUE FEB 24 2009</p>
</div>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109881
Url: https://administrator.de/contentid/109881
Ausgedruckt am: 24.11.2024 um 07:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo renardfm und willkommen im Forum!
Mit Batch alleine macht das bei all diesen Sonderzeichen und unstrukturierten Zeilen keinen Spaß - mit Einbindung von etwas VBS sollte es aber klappen:
Das (durch den Batch erstellte) VBScript sucht mittels "Regulärer Ausdrücke" nach dem ersten Auftreten des übergebenen Strings (zB "Temperature: Zahl°") und gibt nur die gefundene Zahl zurück. Die Schreibweise für die gesuchte Zahl (nur Ziffern) im Suchstring ist dabei "(\d+)"
Durch mehrmaligen Aufruf mit unterschiedlichen Suchbegriffen (siehe zB Variable %SucheWR%) können verschiedene Werte ausgelesen werden.
Grüße
bastla
Mit Batch alleine macht das bei all diesen Sonderzeichen und unstrukturierten Zeilen keinen Spaß - mit Einbindung von etwas VBS sollte es aber klappen:
@echo off & setlocal
set "Datei=C:\Wetter.txt"
set SucheTemp="Temperature: (\d+)°"
set SucheWR="(\d+)°"
set G=%temp%\GetTemp.vbs
>%G% echo Set a=WScript.Arguments:T=CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll:P=a(1)
>>%G% echo Set rE=New RegExp:rE.IgnoreCase=True:rE.Pattern=P:Set Res=rE.Execute(T):For Each R In Res:WScript.Echo R.SubMatches(0):Next
for /f %%i in ('cscript //nologo %G% "%Datei%" %SucheTemp%') do set "T=%%i"
if defined T echo Temperatur: %T%
for /f %%i in ('cscript //nologo %G% "%Datei%" %SucheWR%') do set "WR=%%i"
if defined WR echo Windrichtung: %WR%
Durch mehrmaligen Aufruf mit unterschiedlichen Suchbegriffen (siehe zB Variable %SucheWR%) können verschiedene Werte ausgelesen werden.
Grüße
bastla
HI zusammen
kann man damit auch Textteile auslesen weil wenn ich das richtig verstanden hab kann (\d+) nur Zahlenwerte annehmen?!
in dem Beispiel oben zB will ich die Visibility: nicht nur mit 11 aulesen sondern er soll das 11km auslesen, am besten unabhängig davon wieviel Zeichen der Text hat einfach bis das nächste Trennzeichen kommt in diesem Fall </dd>
LG Ket
kann man damit auch Textteile auslesen weil wenn ich das richtig verstanden hab kann (\d+) nur Zahlenwerte annehmen?!
in dem Beispiel oben zB will ich die Visibility: nicht nur mit 11 aulesen sondern er soll das 11km auslesen, am besten unabhängig davon wieviel Zeichen der Text hat einfach bis das nächste Trennzeichen kommt in diesem Fall </dd>
LG Ket
Hallo NBTKetchup!
Wegen der Anführungszeichen ist das etwas tricky - aber so sollte es klappen:
Den Anführungszeichen-Ersatz "@" kannst Du auch variieren (im Suchstring und in Zeile 9 muss er aber natürlich übereinstimmen) ...
Grüße
bastla
Wegen der Anführungszeichen ist das etwas tricky - aber so sollte es klappen:
@echo off & setlocal
set "Datei=C:\Wetter.txt"
set SucheTemp="Temperature: (\d+)ø"
set SucheWR="(\d+)ø"
set SucheVis="<dd id=@visibility@>(.+)</dd>"
set G=%temp%\GetTemp.vbs
>%G% echo Set a=WScript.Arguments:T=CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll:P=Replace(a(1),"@","""")
>>%G% echo Set rE=New RegExp:rE.IgnoreCase=True:rE.Pattern=P:Set Res=rE.Execute(T):For Each R In Res:WScript.Echo Trim(R.SubMatches(0)):Next
for /f %%i in ('cscript //nologo %G% "%Datei%" %SucheTemp%') do set "T=%%i"
if defined T echo Temperatur: %T%
for /f %%i in ('cscript //nologo %G% "%Datei%" %SucheWR%') do set "WR=%%i"
if defined WR echo Windrichtung: %WR%
for /f "delims=" %%i in ('cscript //nologo %G% "%Datei%" %SucheVis%') do set "Vis=%%i"
if defined Vis echo Visibility: %Vis%
Grüße
bastla