Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
Spielen mit Google und Regex
spacer
Autor Nachricht
derDachs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 18
Dabei seit: 07.04.2008



BeitragVerfasst: Mi 30.04.08 14:12  Antworten mit Zitat Beitrag melden
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 markieren
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 markieren
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 markieren
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 markieren
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 ersetzt
Moderiert von Christian S.: Topic aus Sonstiges (.NET) verschoben am So 25.05.2008 um 12:50
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home