java抓取天气预报数据

package mypack;

import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
import java.io.ObjectInputStream;
import java.util.regex.*;

public class getWeather {

    public static void main(String[] args) {
        //开始分析返回的xml
        HttpURLConnection conn = null;
        String outstr = "";
        String outstrtest = "";
        ObjectInputStream input = null;
        HashMap hm = new HashMap();
        HashMap hm1 = new HashMap();
        //Document doc = null;
        try {
            String strUrl = "http://www.wopos.com/MainSet/WeatherSet.aspx?city=上海";
            URL url = new URL(strUrl);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.
                    getInputStream(), "GBK"));
            String line = "";
            while ((line = br.readLine()) != null) {
                outstr = outstr + line;
            }
            br.close();
        } catch (Exception ex) {
            ex.printStackTrace(System.out);
        } finally {
            if (conn != null) {
                conn.disconnect();
            }
        }
        System.out.println("outstr=" + outstr);
        if(outstr == null){
            System.out.println("null");
        }
        try{
            Pattern p = Pattern.compile("<span id=\"Label\\d\" style=\"display:inline-block;\"><font size=\"\\d\">[\u4e00-\u9fa5]*\\d*[℃]*[~]*[.]*[-]*\\d*[℃]*[-]*\\d*[.]*\\d*[:]*[\u4e00-\u9fa5]*</font></span>");
            Matcher m = p.matcher(outstr);
            while (m.find()) {
                String s = m.group();
                System.out.println("s=" + s);
                if(s!=null){
                    hm.put(s.substring(10, 16), s);
                }
            }
        }catch(Exception ex){
            ex.printStackTrace(System.out);
        }

        System.out.println("地址:" + getAddress(hm));
        System.out.println("天气:" + getTianQi(hm));
        System.out.println("温度:" + getWenDu(hm));
        System.out.println("风力:" + getWind(hm));
    }

    //获取地址
    public static String getAddress(HashMap hm){
        String k = "";
        try {
            Pattern p1 = Pattern.compile("[\u4e00-\u9fa5]{1,4}");
            Matcher m1 = p1.matcher((String)hm.get("Label5"));
            while (m1.find()) {
                k = m1.group();
            }
        } catch (Exception ex) {
            ex.printStackTrace(System.out);
        }
        return k;
    }

    //获取天气
    public static String getTianQi(HashMap hm){
       String k = "";
       try {
           Pattern p1 = Pattern.compile("[\u4e00-\u9fa5]{1,4}");
           Matcher m1 = p1.matcher((String)hm.get("Label1"));
           while (m1.find()) {
               k = m1.group();
           }
       } catch (Exception ex) {
           ex.printStackTrace(System.out);
       }
       return k;
   }

   //获取温度
   public static String getWenDu(HashMap hm){
      String k = "";
      try {
          Pattern p1 = Pattern.compile("\\d+[℃]+[~]*\\d+[℃]+");
          Matcher m1 = p1.matcher((String)hm.get("Label2"));
          while (m1.find()) {
              k = m1.group();
          }
      } catch (Exception ex) {
          ex.printStackTrace(System.out);
      }
      return k;
  }

  //获取风力
  public static String getWind(HashMap hm){
      String k = "";
      try {
          Pattern p1 = Pattern.compile("[\u4e00-\u9fa5]{1,4}");
          Matcher m1 = p1.matcher((String)hm.get("Label3"));
          while (m1.find()) {
              k = m1.group();
          }
      } catch (Exception ex) {
          ex.printStackTrace(System.out);
      }
      return k;
  }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值