2009-04-29 5 views
0

Ich bin "Bildschirm scraping" meine eigenen Seiten als temporärer Hack, mit .NET WebRequest.Kann .NET WebRequest/WebResponse Akzentzeichen, diakritische Zeichen und Entitäten korrekt übersetzen?

Dies funktioniert gut, aber akzentuierte Zeichen und diakritische Zeichen werden nicht korrekt übersetzt.

Ich frage mich, ob es eine Möglichkeit gibt, sie mit den vielen eingebauten Eigenschaften und Methoden von .NET korrekt zu übersetzen. Hier

ist der Code, den ich die Seiten greifen bin mit:

private string getArticle(string urlToGet) 
{ 

    StreamReader oSR = null; 

    //Here's the work horse of what we're doing, the WebRequest object 
    //fetches the URL 
    WebRequest objRequest = WebRequest.Create(urlToGet); 

    //The WebResponse object gets the Request's response (the HTML) 
    WebResponse objResponse = objRequest.GetResponse(); 

    //Now dump the contents of our HTML in the Response object to a 
    //Stream reader 
    oSR = new StreamReader(objResponse.GetResponseStream()); 


    //And dump the StreamReader into a string... 
    string strContent = oSR.ReadToEnd(); 

    //Here we set up our Regular expression to snatch what's between the 
    //BEGIN and END 
    Regex regex = new Regex("<!-- content_starts_here //-->((.|\n)*?)<!-- content_ends_here //-->", 
     RegexOptions.IgnoreCase); 

    //Here we apply our regular expression to our string using the 
    //Match object. 
    Match oM = regex.Match(strContent); 

    //Bam! We return the value from our Match, and we're in business. 
    return oM.Value; 
} 
+1

Es tut mir leid, dass ich etwas kommentiert habe, das nichts mit der Frage zu tun hat, aber Sie verwenden viel zu viele Kommentare. Ernst. – Chris

+0

Ich wollte das schreiben :) –

+0

LOL. Dies wurde von zwei verschiedenen Tutorial-Seiten zurück in den Tag gezogen, mit allen Kommentaren an Ort und Stelle. Ich fühle mich immer irgendwie "schmutzig", wenn ich jemandes hart geschriebene Kommentare aus dem Code nehme, der nicht mir gehört. Ich sollte wahrscheinlich darüber hinwegkommen ... – kendor

Antwort

2

Versuchen Sie es mit:

System.Net.WebClient client = new System.Net.WebClient();
Zeichenfolge html = client.DownloadString (urlToGet);
Zeichenfolge dekodiert = System.Web.HttpUtility.HtmlDecode (html); client.Encoding

auch Besuche

0

Es gibt eine andere Art und Weise zu handhaben, der zweite Parameter des Konstruktors Stream verwendet wird, wie folgt aus:

new StreamReader(webRequest.GetResponse().GetResponseStream(), 
       Encoding.GetEncoding("ISO-8859-1")); 

Das es machen würde.