 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 14.05.2011, 09:00 Titel: Wetterkarten/Daten mit freebasic holen |
|
|
Hallo, wie kann man eigentlich hier die Bilder und Daten von der Wettervorhersage über freebasic abfragen und darstellen:
http://www.wetter-board.de/index.php?page=Radar
Gruss |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 14.05.2011, 09:50 Titel: |
|
|
Es ist schon möglich. Dafür kannst du TSNE verwenden. Allerdings ist das nicht so einfach da du zusätzlich die Rückgabe der Website parsen musst.
Jetzt kenn ich deinen Wissensstand nicht, allerdings würde ich mich als Anfänger eher zurückhalten, so ein Projekt anzugehen. Lieber schrittweise vorgehen, also erstmal Texte per TSNE herumschicken, dann etwas mit Strings spielen um dann zum Parser überzugehen.
Zum Schluss kann man das dann verbinden, allerdings könnte es dauern bis man als Anfänger so weit ist. |
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 14.05.2011, 16:11 Titel: |
|
|
Das TSNE läuft schon bei mir.
Kann Texte austauschen (klient/server).
Gruss |
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 16.05.2011, 13:17 Titel: |
|
|
Hm..., ich hab hier im Demo-Ordner von Freebasic etwas gefunden.
Damit kann man Text runterladen :
Code: |
#include once "win/wininet.bi"
type ftp_ctx
as HINTERNET hint, hconn
end type
Function ftp_open( byval ctx as ftp_ctx ptr, _
byval ctrlname as string = "FTP Nameless Control", _
byval accesstype as integer = INTERNET_OPEN_TYPE_DIRECT, _
byval proxyname as string = "", _
byval proxybypass as string = "" _
) as integer
if( ctx->hint <> NULL ) then
return TRUE
end if
ctx->hint = InternetOpen( ctrlname, accesstype, proxyname, proxybypass, 0 )
if( ctx->hint = NULL ) then
return FALSE
end if
function = TRUE
end function
Function ftp_connect( byval ctx as ftp_ctx ptr, _
ByVal servername as string, _
ByVal serverport as integer = INTERNET_DEFAULT_FTP_PORT, _
ByVal username as string = "anonymous", _
ByVal useremail as string = "anonymous@anonymous", _
ByVal ispassive as integer = FALSE _
) as integer
if( ftp_open( ctx ) = FALSE ) then
return FALSE
end if
ctx->hconn = InternetConnect( ctx->hint, _
servername, serverport, _
username, useremail, _
INTERNET_SERVICE_FTP, _
IIf( ispassive <> FALSE, INTERNET_FLAG_PASSIVE, 0 ), _
NULL )
if( ctx->hconn = NULL ) then
InternetCloseHandle( ctx->hint )
ctx->hint = NULL
return FALSE
end if
function = TRUE
end function
Function ftp_close( byval ctx as ftp_ctx ptr ) as integer
if( ctx->hconn <> NULL ) then
InternetCloseHandle( ctx->hconn )
ctx->hconn = NULL
end if
if( ctx->hint <> NULL ) then
InternetCloseHandle( ctx->hint )
ctx->hint = NULL
end if
function = TRUE
end function
function ftp_getfile( byval ctx as ftp_ctx ptr, _
ByVal remotefile as string, _
ByVal localfile as string, _
ByVal mode as integer = FTP_TRANSFER_TYPE_BINARY _
) As integer
if( ctx->hconn = NULL ) then
return FALSE
end if
function = FtpGetFile( ctx->hconn, remotefile, localfile, FALSE, 0, mode, NULL )
end function
'' main
dim as ftp_ctx ftp
'' connect
if( ftp_connect( @ftp, "ftp.gnu.org" ) = FALSE ) then
print "ERROR: Calling ftp_connect()"
end 1
end if
'' read file
if( ftp_getfile( @ftp, "README", "gnu.org.readme.txt", FTP_TRANSFER_TYPE_ASCII ) = FALSE ) then
print "ERROR: Calling ftp_getfile()"
ftp_close( @ftp )
end 1
end if
'' exit
ftp_close( @ftp )
end 0
|
Wie muss man das jetzt ändern, das man diese Grafik runterladen kann:
http://www.wetterzentrale.de/pics/Rmgfs064.gif ?
Wer kann mir dabei Helfen?
Danke. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 17.05.2011, 10:31 Titel: |
|
|
Hm..., wenn ich dieses eingebe steigt es aus:
http://www.wetter-board.de/index.php?page=Radar
Dieses geht auch nicht:
http://www.wetter.com/community/wetternetzwerk/station/wettermeldungen/?uid=280
Dabei sind es normale Seiten zum Aufrufen.
Wie muss da die Eingabe für den korrekten Aufruf lauten?
Hier geht es:
http://www.wetter-board.de/
Es wird die:
index.html
ausgegeben.
Dieses ist das Programm:
Code: |
'##############################################################################################################
'HTTP_Get TEST-CLIENT für TSNE_V3 und TSNEX_V3
'##############################################################################################################
'##############################################################################################################
#include once "TSNEX_V3.bi" 'Wir binden die TSNE-X Version 3 ein. Sie beinhaltet bereits die TSNE_V3
'##############################################################################################################
'Ein Callback (Das ist Optional), kann den aktuellen fortschritt anzeigen. Dabei wird die Maximalgrösse sowie
'die bereits heruntergeladene Datengrösse angezeigt.
Sub ProgressCallback(V_Max as UInteger, V_Value as UInteger)
locate , 1 'Wir positionieren unseren Cursor an den Anfang der Zeile
Print Str(V_Max); " / "; Str(V_Value); 'Und schreiben odrt (ohen Zeilenumbruch) die aktuellen Werte hin.
End Sub
'##############################################################################################################
'Die URL Definieren. Sie wird per Commandline übergeben und muss folgendermassen aufgebaut sein:
'http://[<benutzername>[:<Passwort>]@]<Hostname>.<Domain>/[<verzeichniss>]/[<Dateiname>][.<Dateierweiterung>]
'Als beispiel kann man "Http://www.google.de/" oder "Http://www.google.de/index.hml" nutzen
Dim XURL as String = Command()
'Wir declarieren noch (ist optional) eine Variable, welche den HTTP-Statuscode aufnehmen wird.
'Damit können wir überprüfen, ob die abfrage erfolgreich war. Liefert sie einen Wert von 200 zurück, dann
'teilt uns der HTTP-Server dadurch mit, das alles OK war, und er die angeforderten Daten überträgt.
Dim XReturn as UShort
'Hier rufen wir die Get Funktion für HTTP auf.
'Dabei übergeben wir der Funktion eine Komplette URL, welche bereits Host / Port / User und Passwort enthält.
'Alternativ können auch alle Angaben direkt der Funktion übergeben werden, falls keine URL verwendet werden soll.
'Zusätzlich KANN (muss NICHT) ein Callback angegeben werden. Dieses Informiert uns über den aktuellen Fortschritt.
'
'Wird kein Zielverzeichniss angegeben, wird die Datei automatisch in das Selbe verzeichniss geschrieben.
'Ist eine Datei mit dem selben Namen schon vorhanden, erfolgt eine Fehlermeldung. Die Datei muss folglich zuvor
'von hand gelöscht werden, damit die Funktion den Download aufnehmen kann.
'Die Datei kann mit "Kill" von hand gelöscht werden.
Dim RV as Integer = TSNEX_HTTP_Get(XURL, , , , , , XReturn, , , , @ProgressCallback)
Print "" 'Da wir ein Callback nutzen, das beim Print keine zeilenumbrüche macht, machen wir jetzt einen
If RV <> TSNEX_Const_NoError Then 'Prüfen, ob die Abfrage erfolgreich war. Wenn nicht
Print TSNEX_GetGURUCode(RV) 'dann geben wir den Fehlercode zurück
End -1 'Und beenden das Programm
End If
Print "HTTP_Status_Code: "; XReturn 'Zu guter letzt noch den HTTP_Status_Code ausgeben.
'200 = Alles OK
'404 = Datei wurde nicht gefunden
'... = Siehe: HTTP://de.WikiPedia.org/wiki/HTTP
' bzw. HTTP://de.WikiPedia.org/wiki/HTTP#HTTP-Statuscodes
End 0 'Zum schluss das Programm sauber beenden
|
Gruss |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 17.05.2011, 12:25 Titel: |
|
|
Jetzt möchte ich ein Verzeichnis auflisten um eine bestimmte Grafik zu laden.
Wie listet man?
Danke.
Gruss |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 17.05.2011, 12:25 Titel: |
|
|
was für ein verzeichniss?
lokal?
HTTP?
FTP?
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 17.05.2011, 13:43 Titel: |
|
|
Das funktioniert nicht, wenn der Server-Betreibe dies nicht zulässt.
Und, das tut er nicht, wie man anhand der meldung "403 Forbidden" beim Aufruf der Webseite "http://www.wetterzentrale.de/pics/" sehen kann.
Dir bleibt also nichts weiter übrig, als entweder den Quellcode zu Parsen, auf denen sich die Adressen der Einzelbilder befinden, oder du gehst eifnach alle bildnummern von 1 bis xx durch udn rufst die adresse auf dem server auf.
letzteres ist übrigens nicht zu empfehlen, da grössere Serverbetreiber regelmässig ihre logs durchforsten, udn dann auf solche aufrufe aufmerksam werden. dann stellen sie ihren code um, und dann musst du doch wieder den Quellcode parsen. Daher kannst du das auch gleich machen. Auserdem köntne es auch sein, das sie dann den code so umbauen, das ein Parsen ungemein schwer wird, was dir die arbeit ernorm erschwert.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 17.05.2011, 13:45 Titel: |
|
|
Die HTTP-Anfrage nach einem Directory-Listing läuft über dein Programm im Prinzip genauso wie über den Browser - wenn die Seite ein Listing nicht erlaubt (danach sieht es hier aus), dann gibt sie über HTTP auch kein Listing zurück. Es sei denn, es gibt eine extra Seite, welche die Liste aller Bilder enthält; dann müsstest du diese auslesen.
edit: TPM war ein bisschen schneller als ich.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 17.05.2011, 17:01 Titel: |
|
|
Jup, danke.
Habe jetzt herausgefunden das die Bilder ein Namenschema haben welches sich nicht ändert.
Gruss |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|