C#webrequest返回混有html代码的奇怪字符

时间:2014-03-11 00:10:12

标签: c# httpwebrequest

我有一些从谷歌搜索的代码,我刚刚注意到,与网络浏览器的响应相比,检索到的html包含额外的字符。我注意到谷歌似乎是强迫https,这可能是问题。如果有人能帮助我弄清楚我会欣赏的东西。

        URL = "http://www.google.com/search?hl=en&safe=off&q=test";

        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
        myRequest.Proxy = null;
        myRequest.Method = "GET";
        myRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0";
        myRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        myRequest.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        myRequest.Headers.Add("Accept-Language", "en-us,en;q=0.5");
        WebResponse myResponse = myRequest.GetResponse();
        StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
        string result = sr.ReadToEnd();
        sr.Close();
        myResponse.Close();

        TextWriter tw2 = new StreamWriter(Directory.GetCurrentDirectory() + "\\google.html");
        tw2.WriteLine(result);
        tw2.Close();

以下是代码和我的网络浏览器的结果之间的比较。第一个是来自代码,注意到接近结尾的。。 (另一个细微的差别并没有影响任何东西,可能是因为不同的标题或其他东西。)

Speedtest.net by Ookla - The Global Broadband Speed <em>Test</em></a></h3><div class="s"><div><div class="f kv" style="white-space:nowrap"><cite class="_md"><cite class="visurl">speedtest.net</cite><cite class="visurl"></cite></cite>‎<div 

Speedtest.net by Ookla - The Global Broadband Speed <em>Test</em></a></h3><div class="s"><div><div class="f kv _xu" style="white-space:nowrap"><cite class="_md">www.speed<b>test</b>.net/</cite>‎<div 

1 个答案:

答案 0 :(得分:0)

你的正则表达式有些不好。在Unicode响应中使用非ANSI字符是完全正常的。你必须期望他们也。我们现在生活在Unicode时代。他们必须在这里 - 因为他们出现在Google的回复中。而且这不是一个错误,它是一个功能。 :)

WebRequest绝对没有错。