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");
}
}
分享到:
相关推荐
`HTMLParser-2[1].0-API.CHM`文件是HTMLParser2.0的API参考手册,它包含了详细的API文档,为开发者提供了如何使用这个库的指南。通过这个手册,开发者可以学习如何创建解析器实例,设置解析选项,注册事件处理器,...
9. **兼容性**:HTMLParser2.0通常与Java 6及以上版本兼容,确保在不同环境下的可用性。 10. **社区支持**:由于其开源性质,HTMLParser2.0拥有活跃的开发社区,用户可以在遇到问题时获得帮助,同时也有大量的示例...
HTMLParser2.0的核心功能包括: 1. **HTML标签解析**:HTMLParser2.0能识别并处理HTML文档中的各种标签,如`<div>`, `<p>`, `<a>`等,帮助开发者提取所需信息。 2. **自定义标签处理**:一个独特的特性是它支持...
在提供的压缩包中,`HTMLParser-2.0-SNAPSHOT-bin`可能是可执行的二进制文件,包括了编译好的JAR文件和其他运行所需的资源。而`HTMLParser-2.0-SNAPSHOT`可能包含了源代码,这对于开发者来说是宝贵的,因为他们可以...
在`parse5-master`这个压缩包中,很可能包含了parse5库的源码和相关资源,你可以通过阅读源码、查看示例和文档来更深入地理解这个库的工作原理,以及如何有效地使用`parse5-htmlparser2-tree-adapter`。同时,熟悉这...
这个"HTMLParser-2.0-SNAPSHOT"版本可能是HTMLParser的一个开发版本或测试版本,包含了最新的特性和改进。 HTMLParser提供了丰富的API,使得开发者可以方便地操作HTML元素,如标签、属性和文本。以下是一些关键的...
接下来是`HTMLParser-2.0-SNAPSHOT-doc.zip`,这应该包含HTMLParser 2.0的API文档。API文档对于任何开发者来说都是至关重要的,因为它详细列出了库中的类、方法和接口,以及它们的用途和用法。通过阅读这份文档,...
HTMLParser2.0是一款用于解析HTML文档的Java库,它为开发者提供了方便的方式来处理和解析HTML内容。这个库尤其适用于那些需要从不规则或非标准的HTML页面中提取数据的应用程序。HTMLParser2.0的发布包括了jar包和源...
HTMLPARSER 2.0 JDK包是一个用于解析HTML文档的Java库,主要针对开发者提供服务。这个库的设计目的是为了处理不规范或者半结构化的HTML,它允许开发者在处理网页内容时,不必过于担心HTML的语法错误。HTMLPARSER 2.0...
里面包含了HtmParser, Httpclient两个工具,一个用来获取网络页面,一个用来解析,配合使用,功能强大,里面还有HtmlParser 的帮助文档(格式有html和chm两种)欢迎大家前来下载使用,如果问题请联系我。
说明了htmlparser2.0的相关事项,同时也给出了htmlparser2.0的api
public class HtmlLinkParser { //获取子链接,url为网页url,filter是链接过滤器,返回该页面子链接的HashSet public static Set<String> extracLinks(String url, LinkFilter filter) { ...
const htmlparser = require("node-htmlparser"); function parseHTML(html) { const parser = new htmlparser.Parser({ onopentag: (name, attrs) => { if (name === "p") { console.log(`Found <p> tag with ...
3. **HTMLParser-2.0-SNAPSHOT-bin.zip**:这部分是编译后的二进制文件,通常包括jar包,可以直接在Java项目中引用。将此jar包添加到项目的类路径中,就可以在程序中使用HTMLParser提供的各种解析功能了。 ...
HTMLParser 2.0 是一个专门用于解析HTML文档的库,尤其在Python编程环境中非常常见。这个库的主要功能是帮助开发者有效地提取、处理和分析HTML文档中的数据,这对于网络爬虫、网页抓取或者需要从网页中提取信息的...
HTMLParser-2.0-API.CHM
HtmlParser-2.0 API ,chm格式,方便使用