2010-03-07 145 views
3

我试图访问网页上的信息。我第一次做到这一点。 问题在于它太慢了。只在一页上执行此操作,在浏览器上加载速度非常快,但在这里永远不会消失。 我唯一需要的就是页面背后的HTML,所以我得问,我的代码是以某种方式下载图片的吗? 任何帮助都可以加速这个过程。花费太长时间来加载页面与HttpWebResponse

 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(); 
+0

你确定它真的在浏览器中加载速度如此之快吗?在测试之前是否清除了浏览器缓存? – Aaronaught 2010-03-07 18:04:11

+0

是的。大约一秒钟。该程序大约需要8秒钟。 – elvispt 2010-03-07 18:06:32

回答

1

使用Fiddler检查交易。

它可能是一个DNS查询超时或认证质询。通过Fiddler,您可以看到浏览器和应用程序传输的时间分类。一切都会变得清晰。

0

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

我建议您将整个响应读入内存,然后解析标签。这些链接说话C#解析器可能给你一个更强大的解决方案:

Looking for C# HTML parser

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

相关问题