VB 5/6-Tipp 0480: Wetterinfos laden (Seite laden und Inhalt isolieren)
von Tim Braun
Beschreibung
Der Tipp zeigt, wie die Seite http://www.wetter.net/deutschland/deutschland.html heruntergeladen, deren HTML-Tags herausgefiltert und anschließend die eigentliche Wettervorhersage isoliert wird.
Update am 03. September 2004 und 07. April 2005: Es wurden jeweils Notizen durch Florian Rittmeier eingearbeitet.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '-------------- Anfang Projektdatei Laden.vbp -------------- ' Die Komponente ' (MSINET.OCX)' wird benötigt. '--------- Anfang Formular "Form1" alias Laden.frm --------- ' Steuerelement: Rahmensteuerelement "Frame1" ' Steuerelement: Textfeld "Text1" auf Frame1 ' Steuerelement: Textfeld "Text2" auf Frame1 ' Steuerelement: Textfeld "Text3" auf Frame1 ' Steuerelement: Beschriftungsfeld "Label1" auf Frame1 ' Steuerelement: Beschriftungsfeld "Label2" (Index von 0 bis 1) auf Frame1 ' Steuerelement: Textfeld "Text4" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Internetsteuerelement "Inet1" ' Steuerelement: Beschriftungsfeld "Label3" ' Autor: Tim Braun ' E-Mail: ttbraun@web.de ' ' Aktualisierungen durch Florian Rittmeier <florian@activevb.de> ' Am 27.08.2004 auf Basis der bisher geposteten Notizen. ' Am 25.03.2005 um endlich das Problem zu lösen, dass bei ' einigen Nutzern die Seite nicht komplett geladen wird und ' es dadurch zu Fehlern kommt. ' Ich möchte aber darauf hinweisen, dass man etwaige Fehler ' schlicht selbst abfangen sollte. Option Explicit Private databuffer As String Function GetRawInfos(HTML As String) As String ' Diese Funktion nimmt ein paar Anpassungen am herausgeschittenen ' HTML-Quellcode vor damit die Anzeige von ehr unnötigen Zeichen ' befreit ist. On Error Resume Next Dim Pos As Long, Pos2 As Long Dim strTemp1 As String, strTemp2 As String ' HTML-Tags entfernen Pos = InStr(1, HTML, "<") Do While Pos > 0 Pos2 = InStr(Pos + 1, HTML, ">") strTemp1 = Mid$(HTML, 1, Pos - 1) strTemp2 = Mid$(HTML, Pos2 + 1) HTML = strTemp1 & " " & strTemp2 Pos = InStr(1, HTML, "<") Loop ' Zeilenumbrüche konform machen (wetter.net spezifisch) HTML = Replace$(HTML, vbLf, vbCrLf, , , vbTextCompare) ' doppelte Leerzeichen entfernen While InStr(1, HTML, " ", vbTextCompare) > 0 HTML = Replace$(HTML, " ", " ", , , vbTextCompare) Wend ' Umwandlung einiger HTML-Entitäten in ihre Repräsentationen HTML = Replace$(HTML, "ä", "ä", , , vbTextCompare) HTML = Replace$(HTML, "ö", "ö", , , vbTextCompare) HTML = Replace$(HTML, "ü", "ü", , , vbTextCompare) HTML = Replace$(HTML, "Ä", "Ä", , , vbTextCompare) HTML = Replace$(HTML, "Ö", "Ö", , , vbTextCompare) HTML = Replace$(HTML, "Ü", "Ü", , , vbTextCompare) GetRawInfos = Trim$(HTML) End Function Private Sub Command1_Click() On Error Goto ErrHANDLER Dim SiteHTML As String Dim ErgStr As String Dim Pos1 As Long, Pos2 As Long Dim W1 As String, W2 As String Inet1.Cancel ' Marker für das Herausschneiden/Extrahieren W1 = Trim$(Text2.Text) W2 = Trim$(Text3.Text) ' Aus der Registry auslesen ob ein Proxyserver ' verwendet werden soll oder nicht Inet1.AccessType = icUseDefault ' Seite anfordern Inet1.Execute Trim$(Text1.Text) ' Und warten bis sie geladen wurde While Inet1.StillExecuting DoEvents Wend ' In der Zwischenzeit sollte databuffer im StateChanged-Ereignis ' aufgefüllt worden sein SiteHTML = databuffer ' ersten Marker suchen Pos1 = InStr(1, SiteHTML, W1) ' zweiten Marker suchen Pos2 = InStr(Pos1 + Len(W1), SiteHTML, W2) ' Text zwischen den Markern herausschneiden ErgStr = Mid$(SiteHTML, Pos1 + Len(W1), Pos2 - (Pos1 + Len(W1))) ' Text von uninteressanten Daten befreien ... Text4.Text = GetRawInfos(ErgStr) Exit Sub ErrHANDLER: Inet1.Cancel Call MsgBox("Fehler " & Err.Number & ": " & Err.Description, _ vbCritical + vbOKOnly, App.Title) End Sub Private Sub Inet1_StateChanged(ByVal State As Integer) ' Wenn Daten komplett erhalten, alle Daten abrufen If State = icResponseCompleted Then Dim chunk As String chunk = Inet1.GetChunk(1024, icString) databuffer = chunk While Len(chunk) > 0 chunk = Inet1.GetChunk(1024, icString) databuffer = databuffer & chunk Wend End If End Sub '---------- Ende Formular "Form1" alias Laden.frm ---------- '--------------- Ende Projektdatei Laden.vbp ---------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von umayevdcr am 21.06.2011 um 20:31
isjQBy <a href="http://dnjfgysukzle.com/">dnjfgysukzle</a>, [url=http://mmbqqlhdfymo.com/]mmbqqlhdfymo[/url], [link=http://rzimjgwfgfvv.com/]rzimjgwfgfvv[/link], http://gcdopjdxrmuu.com/
Kommentar von Sebi am 24.08.2006 um 22:21
Hallo!
Ich grig hier:
SiteHTML = Inet1.OpenURL(Trim$("http://quizbot.gacksi.de/version.html"), icString)
Folgende Fehlermeldung: " Typen unverträglich"
Kann mir da jemand helfen?
Kommentar von Conzelmann am 17.04.2006 um 13:11
Das ganze geht auch viel einfacher ohne die Komponente Microsoft Internet Transfer Control 6.0 (MSINET.OCX)...
Guckst du da ...
http://www.vbfun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0355.shtml
Kommentar von Rainer Zufall am 25.09.2005 um 12:14
Bei mir kommt immer folgende Fehlermeldung, wenn ich auf laden klicke:
Fehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument
Ich wäre sehr froh, wenn mir jemand bei diesem Problem weiterhelfen könnte.
Kommentar von ZoEllNeR am 05.05.2005 um 13:34
Das " " Zeichen ersetzen währe evtl. auch sinnvoll wenn man die Temperatur auslesen will!
Gruß ZoEllNeR
HTML = Replace$(HTML, "°", " ", , , vbTextCompare)
Kommentar von TH am 22.10.2004 um 17:53
Internetsteuerelement "Inet1" VB benödigt Lizenz !