|
网页中添加新浪天气预报的几种方法_[Asp.Net教程] 1.利用新浪提供给的iframe直接嵌入,这种方式非常的简单,但是却没有交互性。代码如下: 2.抓取当天的天气,以指定格式输出。 涉及的核心代码如下:
public static ArrayList GetWeather(string code) { /* [0] "北京 "string [1] "雷阵雨 "string [2] "9℃" string [3] "29℃"string [4] "小于3级"string */ string html = ""; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://weather.sina.com.cn/iframe/weather/" + code + "_w.html "); request.Method = "Get"; //request.Timeout = 1; request.ContentType = "application/x-www-form-urlencoded "; WebResponse response = request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312")); html = sr.ReadToEnd(); s.Close(); sr.Close(); } catch (Exception err) { throw new Exception("访问地址出错~~~ "); }
int count = html.Length; int starIndex = html.IndexOf(" int endIndex = html.IndexOf("", starIndex, count - starIndex); html = html.Substring(starIndex, endIndex - starIndex + 8);
//得到城市 int cityStartIndex = html.IndexOf("", 0, html.Length); int cityEndIndex = html.IndexOf("", 0, html.Length); string City = html.Substring(cityStartIndex + 3, cityEndIndex - cityStartIndex - 3);
//得到天气 int weatherStartIndex = html.IndexOf("", cityEndIndex); int weatherEndIndex = html.IndexOf("", weatherStartIndex); string Weather = html.Substring(weatherStartIndex + 3, weatherEndIndex - weatherStartIndex - 3);
//得到温度
int temperatureStartIndex = html.IndexOf(" int temperatureEndIndex = html.IndexOf("", weatherEndIndex + 3); string Temperature = html.Substring(temperatureStartIndex + 21, temperatureEndIndex - temperatureStartIndex - 21);
int int1 = Temperature.IndexOf("℃", 0); int int2 = Temperature.IndexOf("~", 0); int int3 = Temperature.IndexOf("℃", int2);
string MinTemperature = Temperature.Substring(int2 + 1, int3 - int2); string MaxTemperature = Temperature.Substring(0, int2 - int1 + 2);
//得到风力 int windforceStartIndex = html.IndexOf("风力:", temperatureEndIndex); int windforceEndIndex = html.IndexOf("", windforceStartIndex); string Windforce = html.Substring(windforceStartIndex + 3, windforceEndIndex - windforceStartIndex - 3);
if (Windforce.Contains("小于") && (!Windforce.Contains("等于"))) //判断风力是否含有"小于"或"小于等于"字样将,如果有的话,将其替换为2- { //Windforce = Windforce.Replace("小于", "2-"); string strWindforce = Windforce.Substring(2, Windforce.Length - 3); int minWindforce = Int32.Parse(strWindforce) - 1; Windforce = Windforce.Replace("小于", minWindforce.ToString() + "-");
} else if (Windforce.Contains("小于等于")) { string strWindforce = Windforce.Substring(4, Windforce.Length - 5); int minWindforce = Int32.Parse(strWindforce) - 1; Windforce = Windforce.Replace("小于等于", minWindforce.ToString() + "-"); }
ArrayList al = new ArrayList(); al.Add(City); al.Add(Weather); al.Add(MinTemperature); al.Add(MaxTemperature); al.Add(Windforce);
return al; } 这里涉及到一个ConvertCode类,它的作用是用于把城市转换为对应的全国统一的编码,
|