[原创] Java 天气预告 - htmlparser2.0 + httpclient4.0

Java控制台版 - 天气预告

前段时间,没事儿的时候,就写了一个查看天气预告的小程序,就当学习了!现在将源代码贴上供大家交流。
(程序没有经过优化,仅供大家参考)
(有时候没优化的程序可能更适合学习使用哟!哈哈哈!让大家见笑了啊!)
(其它源代码参见附件,附件中有所需的所有jar包)

主方法:

import java.io.File;
import java.util.Map;

import net.sf.json.JSONObject;

import org.apache.commons.io.FileUtils;

/**
* @author Michael Leo
* @version 2010/08/12
*/
public class Weather {

private static final String ENCODE = "GB2312";

private static StringBuffer file_data = new StringBuffer();

private static String temp;

public static void main(String[] args) throws Exception {
// Weather forecast url
String url = "http://www.weather.com.cn/html/weather/101070201.shtml";

// Live data url
String liveDataHtml = "http://www.weather.com.cn/data/sk/101070201.html";
String liveJson = ParseUtils.getContent(liveDataHtml);

// Get live data bean
@SuppressWarnings("unchecked")
Map<String, Map<String, String>> rootMap = JSONObject
.fromObject(liveJson);
Map<String, String> liveMap = rootMap.get("weatherinfo");
WeatherInfoBean wib = new WeatherInfoBean();
wib.setCity(liveMap.get("city"));
wib.setTime(liveMap.get("time"));

wib.setTemperature(liveMap.get("temp"));
wib.setHumidity(liveMap.get("SD"));
wib.setAtmosphericPressure(liveMap.get("AP"));

wib.setWindDirection(liveMap.get("WD"));
wib.setWindForce(liveMap.get("WS"));
wib.setWindSpeed(liveMap.get("sm") + "m/s");

// Title
temp = "================ " + wib.getCity() + "天气预报 ================";
System.out.println(temp);
file_data.append(temp + "\r\n");
temp = "================ 中国气象局 ================\r\n";
System.out.println(temp);
file_data.append(temp + "\r\n");

// Display live data
StringBuffer sb = new StringBuffer();
temp = ParseUtils.getElementByTagName(url, "DT")[0];
System.out.println(temp);
file_data.append(temp + "\r\n");
sb.append("最新实况: ");
sb.append(wib.getCity()).append(" (").append(wib.getTime()).append(")");
System.out.println(sb.toString());
file_data.append(sb.toString() + "\r\n");

temp = "---------------------------------------------";
System.out.println(temp);
file_data.append(temp + "\r\n");

sb = new StringBuffer();
sb.append("气温: ").append(wib.getTemperature()).append("℃\t");
sb.append("温度: ").append(wib.getHumidity()).append('\t');
sb.append("气压: ").append(wib.getAtmosphericPressure());
System.out.println(sb.toString());
file_data.append(sb.toString() + "\r\n");

sb = new StringBuffer();
sb.append("风向: ").append(wib.getWindDirection()).append('\t');
sb.append("风力: ").append(wib.getWindForce()).append('\t');
sb.append("风速: ").append(wib.getWindSpeed());
System.out.println(sb.toString());
file_data.append(sb.toString() + "\r\n");

temp = "---------------------------------------------\r\n";
System.out.println(temp);
file_data.append(temp + "\r\n");

// -----------------------------------------------------

// Get weather forecast information

String futureHtml = ParseUtils.getElementByAttr(url, "class",
"weatherYubaoBox");

String tds = ParseUtils.getTableInfo(futureHtml, ENCODE);

String[] tdArray = tds.split("\r\n");
for (int i = 0; i < tdArray.length; i++) {
if (tdArray[i].contains("级")) {
System.out.print(tdArray[i]);
System.out.println();
file_data.append(tdArray[i] + "\r\n");
continue;
} else if (tdArray[i].contains("星期")) {
if (i != 0) {
System.out
.println("---------------------------------------------");
file_data
.append("---------------------------------------------\r\n");
}
System.out.print(tdArray[i]);
System.out.println();
file_data.append(tdArray[i] + "\r\n");
continue;
}
System.out.print(tdArray[i]);
System.out.print('\t');
file_data.append(tdArray[i] + "\t");
}

FileUtils.writeStringToFile(new File(System.getProperty("user.dir")
+ "/weatherforecast.txt"), file_data.toString(), "UTF-8");
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值