天气预报
来源:互联网 发布:英语雅思网络课程 编辑:程序博客网 时间:2024/03/29 06:47
/// <summary>
/// 天气预报
/// </summary>
public class weather
{
#region 公共属性
/// <summary>
/// 城市
/// </summary>
public string City;
/// <summary>
/// 日期
/// </summary>
public string Date;
/// <summary>
/// 天气
/// </summary>
public string WeatherInfo;
/// <summary>
/// 温度
/// </summary>
public string Temperature;
/// <summary>
/// 风
/// </summary>
public string Wind;
/// <summary>
/// 光
/// </summary>
public string Light;
#endregion 公共属性
#region ==方法==
/// <summary>
/// 解析指定城市的天气
/// </summary>
/// <param name="cityWeatherPageText"></param>
/// <returns></returns>
public void PasreCityWeather(string cityWeatherPageText)
{
//解析时间
this.ParseDate(cityWeatherPageText);
//解析天气
this.ParseWeather(cityWeatherPageText);
//解析温度
this.ParseTemperature(cityWeatherPageText);
//解析风,光
this.ParseWindAndLight(cityWeatherPageText);
}
public override string ToString()
{
//string LN = "/r/n";
//string result = "南昌 日期:" + this.Date + LN;
//result += "天气:" + this.WeatherInfo + LN;
//result += "温度:" + this.Temperature + LN;
//result += "风:" + this.Wind + LN;
//result += "" + this.Light + LN;
if (this.Temperature == "") this.Temperature = "4℃";
string LN = "/r/n";
string result = "南昌 "; //+ this.Date + LN;
result += this.WeatherInfo + LN;
result += this.Temperature + LN;
return result;
}
#region 私有方法
/// <summary>
/// 解析时间
/// </summary>
/// <param name="cityWeatherPageText"></param>
private void ParseDate(string cityWeatherPageText)
{
this.Date = this.GetStringBetween(cityWeatherPageText, "<span class=/"big-cn/">", "</span>").Trim();
}
/// <summary>
/// 解析天气
/// </summary>
/// <param name="cityWeatherPageText"></param>
private void ParseWeather(string cityWeatherPageText)
{
this.WeatherInfo = this.GetStringBetween(cityWeatherPageText, "class=/"weather/">", "</td>").Trim();
}
/// <summary>
/// 解析温度
/// </summary>
/// <param name="cityWeatherPageText"></param>
private void ParseTemperature(string cityWeatherPageText)
{
this.Temperature = this.GetStringBetween(cityWeatherPageText, "class=/"weatheren/">", "</td>").Trim();
}
/// <summary>
/// 解析风,光
/// </summary>
/// <param name="cityWeatherPageText"></param>
private void ParseWindAndLight(string cityWeatherPageText)
{
string windAndLight = this.GetStringBetween(cityWeatherPageText, "<td width=/"153/" valign=/"top/"><span class=/"big-cn/">", "</td>");
this.Wind = this.GetStringBetween(windAndLight, "", "<br>").Trim();
this.Light = this.GetStringBetween(windAndLight, "<br>", "</span>").Trim();
}
/// <summary>
/// HTML解释
/// </summary>
/// <param name="sourceString">源字符串</param>
/// <param name="startString">需要解释的字符串开头</param>
/// <param name="endString">需要解释的字符串结尾</param>
/// <returns></returns>
private string GetStringBetween(string sourceString, string startString, string endString)
{
int startPos = sourceString.IndexOf(startString) + startString.Length;
int endPos = sourceString.IndexOf(endString, startPos);
string result = sourceString.Substring(startPos, endPos - startPos);
return result;
}
#endregion 私有方法
#endregion
}
/// <summary>
/// 获取远程文件内容
/// </summary>
public class Spider
{
ArrayList alWeather = null;
/// <summary>
///
/// </summary>
private string weatherSiteURL = @"http://weather.tq121.com.cn/";
/// <summary>
/// 城市查找
/// </summary>
private string cityWeatherURL = @"http://weather.tq121.com.cn/mapanel/index1.php?city=";
#region 构造函数
public Spider()
{
alWeather = new ArrayList();
if (System.Configuration.ConfigurationSettings.AppSettings["weatherSiteUrl"] != null)
{
this.weatherSiteURL = System.Configuration.ConfigurationSettings.AppSettings["weatherSiteUrl"];
}
if (System.Configuration.ConfigurationSettings.AppSettings["cityWeatherURL"] != null)
{
this.cityWeatherURL = System.Configuration.ConfigurationSettings.AppSettings["cityWeatherURL"];
}
}
#endregion 构造函数
/// <summary>
/// 取得指定城市的天气
/// </summary>
/// <param name="city"></param>
/// <returns></returns>
public weather GetWeather(string city)
{
string encodedCity = System.Web.HttpUtility.UrlEncode(city, System.Text.Encoding.Default);
string url = this.cityWeatherURL + encodedCity;
Console.WriteLine(url);
string cityWeatherPageText = this.GetPageText(url);
weather cityWeather = new weather();
cityWeather.PasreCityWeather(cityWeatherPageText);
return cityWeather;
}
/// <summary>
/// 取得页面文本
/// </summary>
/// <returns></returns>
private string GetPageText(string url)
{
WebClient wc = new WebClient();
try
{
byte[] dataArray = wc.DownloadData(url);
string weatherPageText = System.Text.Encoding.Default.GetString(dataArray);
return weatherPageText;
}
catch (Exception ex)
{
throw new Exception("打开天气页面失败/r/n" + ex.Message);
}
}
}
//调用示例:
weather cityWeather = spider.GetWeather("南昌");
s = cityWeather.ToString();
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- 天气预报
- C++完美实现Singleton模式
- 感冒
- eclipse在linux下安装
- 练好英语口语的六大法宝
- Asp.net 控件开发中的Render
- 天气预报
- js while / do while 循环
- TD8.0数据库表的字段中文对照
- ARM指令机器码学习——反汇编必学(作者:wogoyixikexie@gliet)
- 修改TestDirector8.0服务器的计算机名后造成客户端无法连接
- TD8.0恢复管理员密码方法
- 初学JAVA的几个问题
- TD8.0项目移植全过程——详解
- JQuery leaning note1