使用HTTP的GET请求做一个简单的天气预报

使用POST请求获取一个简单的天气预报

使用到的技术

数据库
数据库操作
XML转json
json或者XML写入数据库
HTTP的GET请求

请求代码

        /// <summary>
        /// 指定Url地址使用Get 方式获取全部字符串
        /// </summary>
        /// <param name="url">请求链接地址</param>
        /// <returns>服务器返回的数据</returns>
        public static string Get(string url)
        {
            string result = "";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Stream stream = resp.GetResponseStream();
            try
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    result = reader.ReadToEnd();
                }
            }
            finally
            {
                stream.Close();
            }
            return result;
        }

发送请求示例

	///cityName 城市名称, 北京  
        public static string GetWeathrtInfo(string cityName)
        {
            int cityCode = GetCityCodeByCityName(cityName);
            string result = "";
            if (cityCode == 000000)
            {
                result = "未能获取到城市信息(城市天气预报代码)";
                return result;
            }
            else
            {
                string url = "http://www.weather.com.cn/data/sk/" + cityCode + ".html";
                result = HttpRequestHelper.Get(url);
            }
            return result;
        }

        /// <summary>
        /// 根据名称获取城市代码
        /// </summary>
        /// <param name="cityName">城市名称</param>
        /// <returns>城市代码  0000不存在</returns>
        private static int GetCityCodeByCityName(string cityName)
        {
            int code = 0;
            string c = CityInfoJson.Info.Replace("-", "");
            List<County> cv = JsonConvert.DeserializeObject<List<County>>(c);
            County county = cv.Find(x => x.name == cityName);
            if (county == null)
            {
                code = 000000;
            }
            else
            {
                code = int.Parse(county.weatherCode);
            }
            ShuJuKuChaXun("北京");
            return code;
        }

其中CityInfoJson.Info的信息在这篇博客

https://blog.csdn.net/GoodCooking/article/details/124083226

切勿直接将信息复制到IDE中,会把IDE直接卡死。
复制到txt中,然后去读取

信息处理

读取XML信息,然后

 string[] str1 = File.ReadAllLines(@"C:\Users\GoodCooking\Desktop\wyh_Post\wyh_Post\hello.txt");//读取文件,去除不用的字符
            //也可以指定编码方式 

            for (int i = 0; i < str1.Length; i++)
            {
                if (str1[i].Contains("</city>"))
                {
                    str1[i] = "";
                }
                if (str1[i].Contains("</province>"))
                {
                    str1[i] = "";
                }
                if (str1[i].Contains("<city id="))
                {
                    str1[i] = "";
                }

                if (str1[i].Contains("<province id="))
                {
                    str1[i] = "";
                }

            }

            File.WriteAllLines(@"C:\Users\GoodCooking\Desktop\wyh_Post\wyh_Post\hello_new.xml", str1);//写入新的文件

然后将新的文件拷贝到浏览器的XML转JSON中去,将XML转成JSON,并创建对象,将转好的JSON,保存在记事本中,在CityInfoJson中读取读取保存的json,赋值给info。

namespace wyh_Post
{

    public class County
    {
        /// <summary>
        /// 
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string weatherCode { get; set; }
    }

    public class China
    {
        /// <summary>
        /// 
        /// </summary>
        public List<County> county { get; set; }
    }

    public class Root
    {
        /// <summary>
        /// 
        /// </summary>
        public China China { get; set; }
    }
}

Enjoy

不懂评论或者私信哦。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个Python的天气预报系统实现思路,包括数据提取和数据储存。 1. 数据提取 首先,需要从公共数据源获取天气数据。可以使用第三方API,比如和风天气API、心知天气API等等,在这里我们以和风天气API为例。需要注册账号并获取API key。具体实现可参考以下代码: ```python import requests # 和风天气API请求地址和API key url = 'https://free-api.heweather.net/s6/weather/now?location=北京&key=YOUR_API_KEY' # 发送请求并获取响应数据 response = requests.get(url) data = response.json() # 解析JSON数据 if data['HeWeather6'][0]['status'] == 'ok': city = data['HeWeather6'][0]['basic']['location'] weather = data['HeWeather6'][0]['now']['cond_txt'] temperature = data['HeWeather6'][0]['now']['tmp'] print('{}现在的天气是{},温度{}℃'.format(city, weather, temperature)) ``` 2. 数据储存 接下来,需要将获取的天气数据储存到本地文件或数据库中,以便日后查询和分析。可以使用Python内置的文件操作函数或第三方数据库模块,比如sqlite3。以下是一个使用sqlite3模块储存天气数据的示例代码: ```python import sqlite3 # 连接数据库 conn = sqlite3.connect('weather.db') cursor = conn.cursor() # 创建天气表 cursor.execute('''CREATE TABLE IF NOT EXISTS weather (city text, weather text, temperature real)''') # 插入数据 cursor.execute("INSERT INTO weather VALUES (?, ?, ?)", (city, weather, temperature)) # 提交更改并关闭连接 conn.commit() conn.close() ``` 以上代码将创建一个名为weather.db的sqlite3数据库文件,并在其中创建一个名为weather的表格,包含城市名、天气和温度三个字段。然后将获取到的天气数据插入到该表格中。 以上就是一个简单的Python天气预报系统的实现思路。您可以根据需要对其进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值