小弟要做一个功能:就是网站每天0时自动去其他的网页采集所需数据,然后插入自己的数据库中。请问如何实现?需要哪些知识?望高人指点。

解决方案 »

  1.   

    很简单,用一个系统定时器,定时创建一个线程,执行相应程序就行了全部过程是这样的:
    在Global.asax.cs中加入以下代码:
                System.Timers.Timer timer = new System.Timers.Timer();
    protected void Application_Start(Object sender, EventArgs e)
    {
                timer.Elapsed += new System.Timers.ElapsedEventHandler(start);  //start 是你的函数名
                timer.Interval = // 从现在到0点的毫秒数。
                timer.AutoReset = true;
                timer.Enabled = true;
    }        private void start(object sender, System.Timers.ElapsedEventArgs e)
            {
                timer.Interval = 24*60*60*1000;
    //下面这一段改成你自己的
    //读网页
    Uri uri = new Uri("http://showroom.netdania.com/fxcm/XML_QuoteList.asp"); 
    WebRequest wr = WebRequest.Create(uri); 
    Stream s = wr.GetResponse().GetResponseStream(); 
    StreamReader sr = new StreamReader(s, Encoding.Default);
    string strhtml = sr.ReadToEnd();
    sr.Close(); 
    s.Close();  // 用正则取各项
    const string str = "<TR>\\r\\n\\r\\n" +
      "\\t<TD class=\"text\" align=\"left\" nowrap><font style=\"font-size: 8pt\" face=\"Arial\">([^\\<]*)</font></TD>\\r\\n" +
      "\\t<TD class=\"text\" align=\"right\"><font style=\"font-size: 8pt\" face=\"Arial\">([^\\<]*)</font></TD>\\r\\n" +
      "\\t<TD class=\"text\" align=\"right\"><font style=\"font-size: 8pt\" face=\"Arial\">[^\\<]*</font></TD>\\r\\n" +
      "\\t<TD class=\"text\" align=\"right\"><font style=\"font-size: 8pt\" face=\"Arial\">[^\\<]*</font></TD>\\r\\n\\r\\n</TR>";
    //const string str = "\"text\"";
    Regex r = new Regex( str, RegexOptions.Compiled);
    MatchCollection m = r.Matches( strhtml );
    int n = m.Count;
    for( int i = 0; i < n; i++ )
    {
    strprice += string.Format( "<tr style='COLOR: #444; BACKGROUND-COLOR: #{4}' align='center'>" +
    "<td>&nbsp;{0}&nbsp;</td><td>&nbsp;{1}&nbsp;</td><td>&nbsp;{2}&nbsp;</td><td>&nbsp;{3}&nbsp;</td></tr>", 
    m[i].Groups[1],
    m[i].Groups[2],
    "",
    "",
    ((i&1) == 0) ? "fff" : "eee"
    );
    }

            }
      

  2.   


    计算出当前时间与0点的毫秒数,是Start时间,然后每隔24小时(24*60*60*1000)一周期。
    lz,你要明白Global.asax是什么文件。