C# 天气预报采集(中央气象局)[原创]

 由于项目需要自己写了个天气预报的采集程序,因本人刚刚学.net才一个月,所以写的很繁琐很麻烦,希望前辈们能将其完善改进。下面是代码部分,由于工作时间忙没有完善,但功能已实现!
/======================================================================== 
using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Drawing; 
using MSXML2; 
using System.Text.RegularExpressions; 
using System.Data.SqlClient; 
public partial class Tq : System.Web.UI.Page 

    
private string ConnString; 
    
private SqlConnection SqlConn; 
    
private SqlCommand SqlCmd; 
    
private SqlDataAdapter SqlAdpter; 
    
private DataSet ds; 
    
private SqlDataReader SqlReader; 
    DateTime DqDates; 
    DateTime qDqDates; 
    
protected void Page_Load(object sender, EventArgs e) 
    

        
//XMLHTTP xhttp = new XMLHTTP(); 
        
//string url = @"http://www.cma.gov.cn/tqyb/weatherframe/50884/3.html"; 
        
//xhttp.open("post", url, false, null, null); 
        
//xhttp.send(""); 
        
//Byte[] bb = (Byte[])xhttp.responseBody; 
        
//xhttp.abort(); 
        
//图片正则   @"<img[^>]+src=(?:""(?<src>[^""]+)""|'(?<src>[^']+)'|(?<src>\S+))[^>]*>" 
        
//图片正则前后TD标记   "<[^>]*\\n?.*=(\"|\')?(?<path>.*\\.(jpg|gif|png|jpeg|bmp))(\"|\')?.*\\n?[^<]*>" 
        
//TextSarcher.Text = Sta.Substring(Sta.LastIndexOf('/'), Sta.LastIndexOf('f') - Sta.LastIndexOf('/') + 1).ToString(); 
        
//TextSarcher.Text = andy; 
        
//Response.End(); 
        
//Response.Write(Url); 
        
//Response.Write(Flag); name.Replace("-","") 
        
//Response.Write(andy); 
        
//TextSarcher.Text = Regex.Replace(andy, "<[^>]+>", ""); 
        ConnString = ConfigurationManager.ConnectionStrings["Lc_JohnConnectionString"].ConnectionString; 
        SqlConn 
= new SqlConnection(ConnString); 
        SqlCmd 
= new SqlCommand(); 
        SqlAdpter 
= new SqlDataAdapter(); 
        ds 
= new DataSet(); 
        DqDates 
= DateTime.Now; 
        SqlAdpter.SelectCommand 
= new SqlCommand("Select * from Lc_Tq where ID=1", SqlConn); 
        SqlAdpter.Fill(ds, 
"temp"); 
        
string str = ds.Tables["temp"].Rows[0][2].ToString(); 
        qDqDates 
= Convert.ToDateTime(str); 
        TimeSpan d3 
= DqDates.Subtract(qDqDates); 
        
int Sadse = d3.Hours * 60
        
int stadate = d3.Minutes + Sadse; 
        
if (stadate >= 150 || stadate < 0
        

            
for (Int32 i = 1; i <= 3; i++
            

                MSXML2.XMLHTTP xmlhttp 
= new MSXML2.XMLHTTP(); 
                
string Url = "http://www.cma.gov.cn/tqyb/weatherframe/50884/" + i + ".html"
                
//string Url = "http://www.cma.gov.cn/tqyb/weatherdetail/50884.html"; 
                xmlhttp.open("GET", Url, falsenullnull); 
                xmlhttp.send(
""); 
                MSXML2.XMLDocument dom 
= new XMLDocument(); 
                Byte[] b 
= (Byte[])xmlhttp.responseBody; 
                
//string Flag = System.Text.ASCIIEncoding.UTF8.GetString(b, 0, b.Length); 
                string andy = System.Text.Encoding.GetEncoding("GB2312").GetString(b).Trim(); 
                
string[] resultString = Regex.Split(andy, @"<img[^>]+src=""/tqyb/img/city/50884.jpg""[^>]*>", RegexOptions.IgnoreCase); 
                
string HtmlsOne = resultString[0].ToString(); 
                
//Response.Write(HtmlsOne); 
                Regex re = new Regex(@"<img[^>]+src=(?:""(?<src>[^""]+)""|'(?<src>[^']+)'|(?<src>\S+))[^>]*>", RegexOptions.IgnoreCase | RegexOptions.Multiline); 
                MatchCollection HtmlsTwo 
= re.Matches(HtmlsOne); 
                
string HtmlsThres = HtmlsTwo[3].ToString() + HtmlsTwo[4].ToString(); 
                Regex rt 
= new Regex(@"src=""(.+?)""", RegexOptions.IgnoreCase | RegexOptions.Multiline); 
                MatchCollection HtmlsFors 
= rt.Matches(HtmlsThres); 
                
string[] Dsta = HtmlsFors[0].ToString().Split('/'); 
                
string[] Dste = HtmlsFors[1].ToString().Split('/'); 
                
string Sta = HtmlsTwo[0].ToString(); 
                
string Imgs1 = Dsta[Dsta.Length - 1].ToString().Replace("\""""); //图片1 
                string Imgs2 = Dste[Dsta.Length - 1].ToString().Replace("\""""); //图片2 
                string Sjh = Regex.Replace(HtmlsOne, "<[^级>]+>""").Replace(" """).Replace(" """).Replace("\n""").Replace("天气预报-CMA"""); 
                
string[] Sth = Regex.Split(Sjh, "城市:双鸭山|气温:|风向风力:|日期:", RegexOptions.IgnoreCase); 
                
string Tqqk = Sth[1].ToString();// 天气情况 
                string Tqqw = Sth[2].ToString();// 天气气温 
                string Tqfx = Sth[3].ToString();// 风向风力 
                string Tqrq = Sth[4].ToString();// 当前日期 
                SqlCmd.CommandText = "UPDATE [Lc_Tq] SET [CjDATE] = '" + DqDates + "', [TQDATE] ='" + Tqrq + "', [Picture1] = '" + Imgs1 + "', [Picture2] = '" + Imgs2 + "', [TQQK] ='" + Tqqk + "', [TQQW] ='" + Tqqw + "', [FlFx] ='" + Tqfx + "' WHERE [ID] = '" + i + "'"
                SqlCmd.Connection 
= SqlConn; 
                SqlConn.Open(); 
                SqlCmd.ExecuteNonQuery(); 
                SqlConn.Close(); 
                TextSarcher.Text 
+= stadate.ToString() + "\n" + Imgs1 + "\n" + Imgs2 + "\n"
                TextSarcher.Text 
+= Tqqk + "\n" + Tqqw + "\n" + Tqfx + "\n" + Tqrq + "\n-----------------------\n"
            }
 
        }
 
        
//以下是显示详细信息 
        SqlAdpter.SelectCommand = new SqlCommand("Select * from Lc_Tq where ID=1", SqlConn); 
        SqlAdpter.Fill(ds, 
"24XsTable"); 
        TextSarcher.Text 
+= ds.Tables["24XsTable"].Rows[0][3].ToString().Trim();//日期 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][4].ToString().Trim();//图片1 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][5].ToString().Trim();//图片2 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][6].ToString().Trim();//情况 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][7].ToString().Trim();//温度 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][8].ToString().Trim();//风力 
        TextSarcher.Text += "\n"
        SqlAdpter.SelectCommand 
= new SqlCommand("Select * from Lc_Tq where ID=2", SqlConn); 
        SqlAdpter.Fill(ds, 
"48XsTable"); 
        TextSarcher.Text 
+= ds.Tables["24XsTable"].Rows[0][3].ToString().Trim();//日期 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][4].ToString().Trim();//图片1 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][5].ToString().Trim();//图片2 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][6].ToString().Trim();//情况 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][7].ToString().Trim();//温度 
        TextSarcher.Text += ds.Tables["24XsTable"].Rows[0][8].ToString().Trim();//风力 
        TextSarcher.Text += "\n"
        SqlAdpter.SelectCommand 
= new SqlCommand("Select * from Lc_Tq where ID=3", SqlConn); 
        SqlAdpter.Fill(ds, 
"72XsTable"); 
        TextSarcher.Text 
+= ds.Tables["72XsTable"].Rows[0][3].ToString().Trim();//日期 
        TextSarcher.Text += ds.Tables["72XsTable"].Rows[0][4].ToString().Trim();//图片1 
        TextSarcher.Text += ds.Tables["72XsTable"].Rows[0][5].ToString().Trim();//图片2 
        TextSarcher.Text += ds.Tables["72XsTable"].Rows[0][6].ToString().Trim();//情况 
        TextSarcher.Text += ds.Tables["72XsTable"].Rows[0][7].ToString().Trim();//温度 
        TextSarcher.Text += ds.Tables["72XsTable"].Rows[0][8].ToString().Trim();//风力 
        TextSarcher.Text += "\n"
    }
 
}
posted @ 2008-02-14 18:04  龍峸.大卫  阅读(2700)  评论(0编辑  收藏  举报