天气预报抓取、解析(传递抓取的info参数)功能模块实现(代码)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
package com.zzk.cn;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Properties;

import net.sf.json.JSONObject;

/**
 *
 * @author zhuzhengke
 * @version 1.0.0
 * 
 */


public class Json {

	static String info = "";

	/*主函数*/
	public static void main(String[] args) throws UnsupportedEncodingException {
		//抓取网页
		getInfo(101010100);
		//解析字段
		readJson();
	}
	
	/**
	 * 获取网页信息
	 */
	public static void getInfo(int id) {
		
		String path = "http://m.weather.com.cn/data/"+id+".html";
		URL url;
		String inputline = "";
		InputStream input = null;
		InputStreamReader reader = null;
		BufferedReader buffer = null;
		
		try {
			url = new URL(path);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setReadTimeout(10 * 1000);
			conn.setRequestMethod("GET");

			input = conn.getInputStream();
			reader = new InputStreamReader(input,"utf8");
			buffer = new BufferedReader(reader);

			while ((inputline = buffer.readLine()) != null) {
				info += inputline;
			}

		} catch (ProtocolException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			//关闭资源
			try {
				if (null != buffer) {
					buffer.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			buffer = null;
			
			try {
				if (null != reader) {
					reader.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			reader = null;
			
			try {
				if (null != input) {
					input.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			input = null;
		}
	}
	
	/**
	 * Json解析
	 */
	public static void readJson() {

		
		
		JSONObject jsonob = JSONObject.fromObject((JSONObject.fromObject(info)
				.getString("weatherinfo")));

		String city = jsonob.getString("city");// 城市
		System.out.println(city);

		String date_y = jsonob.getString("date_y");// 时间
		System.out.println(date_y);

		String date = jsonob.getString("date");// 农历年
		System.out.println(date);

		String week = jsonob.getString("week");// 星期
		System.out.println(week);

		String cityid = jsonob.getString("cityid");// 城市号
		System.out.println(cityid);

		String temp1 = jsonob.getString("temp1");// 以下是六天内摄氏温度
		System.out.println(temp1);

		String temp2 = jsonob.getString("temp2");
		System.out.println(temp2);

		String temp3 = jsonob.getString("temp3");
		System.out.println(temp3);

		String temp4 = jsonob.getString("temp4");
		System.out.println(temp4);

		String temp5 = jsonob.getString("temp5");
		System.out.println(temp5);

		String temp6 = jsonob.getString("temp6");
		System.out.println(temp6);

		String tempF1 = jsonob.getString("tempF1");// 以下是六天内华氏温度
		System.out.println(tempF1);

		String tempF2 = jsonob.getString("tempF2");
		System.out.println(tempF2);

		String tempF3 = jsonob.getString("tempF3");
		System.out.println(tempF3);

		String tempF4 = jsonob.getString("tempF4");
		System.out.println(tempF4);

		String tempF5 = jsonob.getString("tempF5");
		System.out.println(tempF5);

		String tempF6 = jsonob.getString("tempF6");
		System.out.println(tempF6);

		String weather1 = jsonob.getString("weather1");// 以下是六天天气
		System.out.println(weather1);

		String weather2 = jsonob.getString("weather2");
		System.out.println(weather2);

		String weather3 = jsonob.getString("weather3");
		System.out.println(weather3);

		String weather4 = jsonob.getString("weather4");
		System.out.println(weather4);

		String weather5 = jsonob.getString("weather5");
		System.out.println(weather5);

		String weather6 = jsonob.getString("weather6");
		System.out.println(weather6);

		String wind1 = jsonob.getString("wind1");// 以下六天为风力
		System.out.println(wind1);

		String wind2 = jsonob.getString("wind2");
		System.out.println(wind2);

		String wind3 = jsonob.getString("wind3");
		System.out.println(wind3);

		String wind4 = jsonob.getString("wind4");
		System.out.println(wind4);

		String wind5 = jsonob.getString("wind5");
		System.out.println(wind5);

		String wind6 = jsonob.getString("wind6");
		System.out.println(wind6);

		String fl1 = jsonob.getString("fl1");// 以下为六天风级
		System.out.println(fl1);

		String fl2 = jsonob.getString("fl2");
		System.out.println(fl2);

		String fl3 = jsonob.getString("fl3");
		System.out.println(fl3);

		String fl4 = jsonob.getString("fl4");
		System.out.println(fl4);

		String fl5 = jsonob.getString("fl5");
		System.out.println(fl5);

		String fl6 = jsonob.getString("fl6");
		System.out.println(fl6);

		String index_d = jsonob.getString("index_d");// 当日穿衣指数
		System.out.println(index_d);
	}

	
}


 

目录
相关文章
|
24天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
103 60
|
25天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
69 10
|
25天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
31 1
|
20天前
|
供应链 安全 BI
CRM系统功能深度解析:为何这些平台排名靠前
本文深入解析了市场上排名靠前的CRM系统,如纷享销客、用友CRM、金蝶CRM、红圈CRM和销帮帮CRM,探讨了它们在功能性、用户体验、集成能力、数据安全和客户支持等方面的优势,以及如何满足企业的关键需求,助力企业实现数字化转型和业务增长。
|
25天前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
69 0
|
1月前
|
Web App开发 存储 前端开发
前端开发必备:requestAnimationFrame、setInterval、setTimeout——功能解析与优劣对比
前端开发必备:requestAnimationFrame、setInterval、setTimeout——功能解析与优劣对比
145 0
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
32 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
70 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
57 0

推荐镜像

更多