使用WebClient从远程网站读取值

时间:2011-03-08 11:59:54

标签: c# .net

{
    WebClient client = new WebClient();

    // Add a user agent header in case the 
    // requested URI contains a query.

    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    Stream data = client.OpenRead("http://www.nseindia.com/marketinfo/indices/indexwatch.jsp");
    StreamReader reader = new StreamReader(data);
    string s = null;
    int count = 0;
    while (reader.Read()>0)
    {
        s = reader.ReadLine();
        if (s.Contains("<td class=t1>"))
        {
           s= s.Remove(0, 18);
           s = s.Remove(s.Length - 5);
           count++;
           if (count == 5)
               break;
        }

    }


   // MessageBox.Show(s);
    data.Close();
    reader.Close();
    return s;
}

你能帮我跑这个......

1 个答案:

答案 0 :(得分:2)

您正在调用消耗字符的reader.Read(),然后然后您正在阅读一行。我建议你把你的循环改为:

string line;

while ((line = reader.ReadLine()) != null)
{
    ...
}

您还应该使用using语句,以便即使抛出异常也会关闭所有内容。哦,我会使用string.Substring代替string.Remove

我可能还会使用client.DownloadString一次性获取所有内容而不是打开流。它更简单。