Hi, sicherlich ist ja schon aufgefallen, daß Google bei eine anfrage wie ( wetter berlin )
als erstes, seine eigenen Wetterdaten anzeigt, bevor er andere Seiten als Suchtreffer Zeigt...
Hiermit kann man sehrgut Regex Demonstrieren, bzw sich eine Lustige Wetterstation erstellen.
Man erstelle eine Webrequest:
C#-Quelltext
1:
| string strUrl = "http://www.google.de/search?client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&channel=s&hl=de&q=wetter+"+str_Ort+"&meta=&btnG=Google-Suche"; |
Dann im iso-8859-1 !!! einlesen, also so....
C#-Quelltext
1: 2: 3:
| Stream stream = webres.GetResponseStream(); StreamReader reader = new StreamReader(stream,Encoding.GetEncoding("iso-8859-1")); String sSearch = reader.ReadToEnd(); |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| Regex r; Match m; r = new Regex("[0-9]+ °C"); for (m = r.Match(sSearch); m.Success; m=m.NextMatch()) { Console.WriteLine("Found:\t" + m.ToString() + "\tan Position: " + m.Index); } r = new Regex("[0-9]+ km/h"); for (m = r.Match(sSearch); m.Success; m = m.NextMatch()) { Console.WriteLine("Found:\t" + m.ToString() + "\tan Position: " + m.Index); } r = new Regex("Wind:[ ]{1}[A-Z]([A-Z]{1})?"); for (m = r.Match(sSearch); m.Success; m = m.NextMatch()) { Console.WriteLine("Found:\t" + m.ToString() + "\tan Position: " + m.Index); } r = new Regex("[0-9]+ %"); for (m = r.Match(sSearch); m.Success; m = m.NextMatch()) { Console.WriteLine("Found:\t" + m.ToString() + "\tan Position: " + m.Index); } r = new Regex("<b>[A-Z]{1}[a-zäöü]*([ ]{1}[A-Z]?[a-zäöü]*)?</b><br>"); for (m = r.Match(sSearch); m.Success; m = m.NextMatch()) { Console.WriteLine("Found:\t" + m.ToString() + "\tan Position: " + m.Index); } r = new Regex("alt=\"[A-Z]{1}[a-zäöü]*([ ]{1}[A-Z]?[a-zäöü]*)?\""); for (m = r.Match(sSearch); m.Success; m = m.NextMatch()) { Console.WriteLine("Found:\t" + m.ToString() + "\tan Position: " + m.Index); } |
jetzt kann man nach belieben die einzelenen Werte in Numerische und Nichtnumerische Werte wandeln
und supi, man hat seine Werte für eine Wetteranzeige, nach beliebigen Ort.
Es kommt vor, daß Google kein Wetter zeigt für eine Stadt, keine Problem
erstens finden die Regex dann nichts und zweitens kann man ka hiernach suchen.
C#-Quelltext
1:
| int startid = sSearch.IndexOf("<b>Wetter</b> für <b>"+str_Ort+"</b>"); |
wenn der -1 dann nix da..
mfg derDachs
Moderiert von Christian S.: Code- durch C#-Tags ersetztModeriert von Christian S.: Topic aus Sonstiges (.NET) verschoben am So 25.05.2008 um 12:50