Java 抓包读取天气

1、创建天气处理类

package com.nosya;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Weather {
    //http://ws.webxml.com.cn/WebServices/WeatherWS.asmx
    public String getWeather() {
        //三明 101230801
        //厦门 101230201
        String cityCodeXm = "101230201";
        String cityCodeSm = "101230801";
        String url = String.format("http://www.weather.com.cn/weather/%s.shtml", cityCodeXm);
        String today = getTodayInfo(url);
        return today;
    }

    private String getTodayInfo(String urlInfo) {
        URL url;
        try {
            url = new URL(urlInfo);
            HttpURLConnection httpUrl;
            try {
                httpUrl = (HttpURLConnection) url.openConnection();
                InputStream is = httpUrl.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
                StringBuilder sb = new StringBuilder();
                String line;
                while ((line = br.readLine()) != null) {
                    line = line.replaceAll("</?a[^>]*>", "");
                    // line = line.replaceAll("<(\\w+)[^>]*>", "<$1>");
                    sb.append(line);
                }
                is.close();
                br.close();
                return getToday(sb.toString().trim());
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return null;
        }
    }

    private String getToday(String str) {
        String ul = str.split("<ul class=\"t clearfix\">")[1];
//        Weather wea = new Weather();
        String innerUl = ul.split("</ul>")[0];
        String[] strings = innerUl.split("</li>");

        /**
         <li class="sky skyid lv2 on"><h1>2日(今天)</h1><big class="png40 d01"></big><big class="png40 n01"></big><p title="多云" class="wea">多云</p><p class="tem"><span>19</span>/<i>11℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         <li class="sky skyid lv2"><h1>3日(明天)</h1><big class="png40 d01"></big><big class="png40 n02"></big><p title="多云转阴" class="wea">多云转阴</p><p class="tem"><span>18</span>/<i>12℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         <li class="sky skyid lv3"><h1>4日(后天)</h1><big class="png40 d02"></big><big class="png40 n07"></big><p title="阴转小雨" class="wea">阴转小雨</p><p class="tem"><span>16</span>/<i>13℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         <li class="sky skyid lv3"><h1>5日(周日)</h1><big class="png40 d07"></big><big class="png40 n07"></big><p title="小雨" class="wea">小雨</p><p class="tem"><span>16</span>/<i>14℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         <li class="sky skyid lv3"><h1>6日(周一)</h1><big class="png40 d07"></big><big class="png40 n07"></big><p title="小雨" class="wea">小雨</p><p class="tem"><span>20</span>/<i>15℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         <li class="sky skyid lv3"><h1>7日(周二)</h1><big class="png40 d02"></big><big class="png40 n02"></big><p title="阴" class="wea">阴</p><p class="tem"><span>20</span>/<i>15℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         <li class="sky skyid lv3"><h1>8日(周三)</h1><big class="png40 d02"></big><big class="png40 n02"></big><p title="阴" class="wea">阴</p><p class="tem"><span>18</span>/<i>15℃</i></p><p class="win"><em><span title="无持续风向" class="NNW"></span><span title="无持续风向" class="NNW"></span></em><i><3级</i></p><div class="slid"></div>
         多云
         */
//        for (String s : strings) {
//            System.out.println(s);
//        }

        String s = strings[0];
        String str2 = s.split("<p title=\"")[1];
        return str2.split("\"")[0];
    }
}

2、调用天气处理类

private static void testWeather() {
        Weather obj = new Weather();
        String res = obj.getWeather();
        System.out.println(res);
    }

 

posted @ 2023-02-06 14:56  都是城市惹的祸  阅读(165)  评论(0)    收藏  举报