使用HttpWebResponse加载页面花费的时间太长

时间:2010-03-07 18:00:06

标签: c# stream web-crawler

我正在尝试访问网页上的信息。我第一次这样做了。 这个问题是它太慢了。仅在一个页面上执行此操作,在浏览器上加载速度非常快,但在这里需要永久。 我这里唯一需要的是页面后面的HTML,所以我要问,我的代码是否以某种方式下载图像? 任何帮助都会很好地加快这个过程。

        string url;

        HttpWebRequest pedido = (HttpWebRequest)WebRequest.Create(url);

        HttpWebResponse resposta = (HttpWebResponse)pedido.GetResponse();
        //On the line above it takes forever to load.

        StreamReader SR = new StreamReader(resposta.GetResponseStream());


        string html;
        string tituloTemp = "";

        do
        {
            html = SR.ReadLine();
            if (html.Contains("<title>"))
                tituloTemp = html;

        } while (!(html.Contains("<title>")));
        SR.Close();

3 个答案:

答案 0 :(得分:1)

用Fiddler检查交易。

可能是DNS查询超时或身份验证质询。使用Fiddler,您将能够看到浏览器和应用程序转换的时间细分。一切都会变得清晰。

答案 1 :(得分:0)

你的问题很可能是ReadLine(),只有在它遇到换行符时才会返回。如果页面没有换行符,那么您可能会看到超时。您还要扫描两次“”,因此您应该重新考虑解析方法。

我建议您将整个响应读入内存,然后为您的标记解析。这些链接与C#解析器相关,可以为您提供更强大的解决方案:

Looking for C# HTML parser

What is the best way to parse html in C#?

答案 2 :(得分:0)

我实际上在堆栈溢出时找到了答案: 链接在这里: HTTPWebResponse + StreamReader Very Slow