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); }
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号