`
yhz61010
  • 浏览: 564781 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12301
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
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");
	}
}

2
3
分享到:
评论
1 楼 sarin 2011-01-11  
101070201大连

相关推荐

    htmlparser2.0_dll+htmlparserAPI

    `HTMLParser-2[1].0-API.CHM`文件是HTMLParser2.0的API参考手册,它包含了详细的API文档,为开发者提供了如何使用这个库的指南。通过这个手册,开发者可以学习如何创建解析器实例,设置解析选项,注册事件处理器,...

    htmlparser2.0

    9. **兼容性**:HTMLParser2.0通常与Java 6及以上版本兼容,确保在不同环境下的可用性。 10. **社区支持**:由于其开源性质,HTMLParser2.0拥有活跃的开发社区,用户可以在遇到问题时获得帮助,同时也有大量的示例...

    htmlParser2.0.jar

    HTMLParser2.0的核心功能包括: 1. **HTML标签解析**:HTMLParser2.0能识别并处理HTML文档中的各种标签,如`&lt;div&gt;`, `&lt;p&gt;`, `&lt;a&gt;`等,帮助开发者提取所需信息。 2. **自定义标签处理**:一个独特的特性是它支持...

    java解析html工具htmlparser的jar包及api文档

    在提供的压缩包中,`HTMLParser-2.0-SNAPSHOT-bin`可能是可执行的二进制文件,包括了编译好的JAR文件和其他运行所需的资源。而`HTMLParser-2.0-SNAPSHOT`可能包含了源代码,这对于开发者来说是宝贵的,因为他们可以...

    前端开源库-parse5-htmlparser2-tree-adapter

    在`parse5-master`这个压缩包中,很可能包含了parse5库的源码和相关资源,你可以通过阅读源码、查看示例和文档来更深入地理解这个库的工作原理,以及如何有效地使用`parse5-htmlparser2-tree-adapter`。同时,熟悉这...

    HTMLParser-2.0-SNAPSHOT

    这个"HTMLParser-2.0-SNAPSHOT"版本可能是HTMLParser的一个开发版本或测试版本,包含了最新的特性和改进。 HTMLParser提供了丰富的API,使得开发者可以方便地操作HTML元素,如标签、属性和文本。以下是一些关键的...

    htmlparse 2.0 + 中文doc文档 天涯浪子

    接下来是`HTMLParser-2.0-SNAPSHOT-doc.zip`,这应该包含HTMLParser 2.0的API文档。API文档对于任何开发者来说都是至关重要的,因为它详细列出了库中的类、方法和接口,以及它们的用途和用法。通过阅读这份文档,...

    HTMLParser2.0jar包及源代码

    HTMLParser2.0是一款用于解析HTML文档的Java库,它为开发者提供了方便的方式来处理和解析HTML内容。这个库尤其适用于那些需要从不规则或非标准的HTML页面中提取数据的应用程序。HTMLParser2.0的发布包括了jar包和源...

    HTMLPARSER2.0 JDK包

    HTMLPARSER 2.0 JDK包是一个用于解析HTML文档的Java库,主要针对开发者提供服务。这个库的设计目的是为了处理不规范或者半结构化的HTML,它允许开发者在处理网页内容时,不必过于担心HTML的语法错误。HTMLPARSER 2.0...

    HTMLParser Jar+src+html文档+chm文档+HttpClient Jar

    里面包含了HtmParser, Httpclient两个工具,一个用来获取网络页面,一个用来解析,配合使用,功能强大,里面还有HtmlParser 的帮助文档(格式有html和chm两种)欢迎大家前来下载使用,如果问题请联系我。

    htmlparser2.0的学习文档

    说明了htmlparser2.0的相关事项,同时也给出了htmlparser2.0的api

    HTMLParser-2.0-SNAPSHOT-bin.zip JAVA html解析库

    public class HtmlLinkParser { //获取子链接,url为网页url,filter是链接过滤器,返回该页面子链接的HashSet public static Set&lt;String&gt; extracLinks(String url, LinkFilter filter) { ...

    node-htmlparser.zip

    const htmlparser = require("node-htmlparser"); function parseHTML(html) { const parser = new htmlparser.Parser({ onopentag: (name, attrs) =&gt; { if (name === "p") { console.log(`Found &lt;p&gt; tag with ...

    HTMLParser 2.0最新jar API 源代码

    3. **HTMLParser-2.0-SNAPSHOT-bin.zip**:这部分是编译后的二进制文件,通常包括jar包,可以直接在Java项目中引用。将此jar包添加到项目的类路径中,就可以在程序中使用HTMLParser提供的各种解析功能了。 ...

    HTMLParser 2.0

    HTMLParser 2.0 是一个专门用于解析HTML文档的库,尤其在Python编程环境中非常常见。这个库的主要功能是帮助开发者有效地提取、处理和分析HTML文档中的数据,这对于网络爬虫、网页抓取或者需要从网页中提取信息的...

    HTMLParser-2.0-API.CHM

    HTMLParser-2.0-API.CHM

    HtmlParser-2.0 API

    HtmlParser-2.0 API ,chm格式,方便使用

Global site tag (gtag.js) - Google Analytics