Autor Beitrag
derDachs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 30.04.08 14:12 
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:
ausblenden 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....
ausblenden C#-Quelltext
1:
2:
3:
            Stream stream = webres.GetResponseStream();
            StreamReader reader = new StreamReader(stream,Encoding.GetEncoding("iso-8859-1"));
            String sSearch = reader.ReadToEnd();


ausblenden volle Höhe C#-Quelltext
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;
            // Detektiert die einzelnen Temperaturen
            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);                
            }
            // Detektiert Windstärke
            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);
            }
            // Detektiert Windrichtung
            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);                
            }
            // Detektiert Luftfeuchtigkeit
            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);
            }
            // Detektiert die Wettereigenschaft.. Wenn keine dann keine Eigenschaft von Google
            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);
            }
            
            // Detektiert die 4 Wettereigenschften von Heute Morgen ÜMorgen bla            
            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.
ausblenden 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 user profile iconChristian S.: Code- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus Sonstiges (.NET) verschoben am So 25.05.2008 um 12:50