解析网页中添加新浪天气预报的几种方法_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:使用ASP.NET内置类生成图片缩略图及水印
ASP.NETImageGeneration内置了ImageResizeTransform类,可以实现图片大小调整功能。也可以扩展ImageTransform实现自己的图片变换类。 下面使用ASP.NETImageGeneration生成图片缩略图及水印的代码。 数据库: CREATETABLEt_images ( image_idINT, image_dataIM

    1.利用新浪提供给的iframe直接嵌入,这种方式非常的简单,但是却没有交互性。代码如下:
<iframe frameborder="0" src="http://php.weather.sina.com.cn/widget/weather.php" scrolling="no" width="246" height="360"></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("<table ", 0, count);
            int endIndex = html.IndexOf("</table>", starIndex, count - starIndex);
            html = html.Substring(starIndex, endIndex - starIndex + 8);

            //得到城市
            int cityStartIndex = html.IndexOf("<b>", 0, html.Length);
            int cityEndIndex = html.IndexOf("</b>", 0, html.Length);
            string City = html.Substring(cityStartIndex + 3, cityEndIndex - cityStartIndex - 3);


            //得到天气
            int weatherStartIndex = html.IndexOf("<b>", cityEndIndex);
            int weatherEndIndex = html.IndexOf("</b>", weatherStartIndex);
            string Weather = html.Substring(weatherStartIndex + 3, weatherEndIndex - weatherStartIndex - 3);

            //得到温度

            int temperatureStartIndex = html.IndexOf("<b", weatherEndIndex);
            int temperatureEndIndex = html.IndexOf("</b>", 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("<br>", 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类,它的作用是用于把城市转换为对应的全国统一的编码,

分享:揭秘.Net开发常用十大辅助软件
1.EditPlus:文字处理软件 EditPlus是一款功能强大的文字处理软件。它可以充分的替换记事本,它也提供网页作家及程序设计师许多强悍的功能。支持HTML、CSS、PHP、ASP、Perl、C/C++、Java、JavaScript、VBScript等多种语法的着色显示。程序内嵌网页浏览器,其

共2页上一页12下一页
来源:模板无忧//所属分类:.Net教程/更新时间:2010-04-13
相关.Net教程