📄 weather.jsp
字号:
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.*"%>
<%@ page import="cn.js.fan.util.*"%>
<%@ page import="com.redmoon.forum.miniplugin.*"%>
<%@ page import="com.redmoon.forum.miniplugin.weather.*"%>
<%@ page import="com.redmoon.forum.*"%>
<%@ page import="java.io.BufferedReader"%>
<%@ page import="java.io.InputStreamReader"%>
<%@ page import="java.net.URL"%>
<%@ page import="java.net.HttpURLConnection"%>
<%@ page import="java.util.regex.Pattern"%>
<%@ page import="java.util.regex.Matcher"%>
<%!
/**
* 获取一个网页的内容
* @param link String
* @return String
*/
public String gather(String link) {
String str = "";
try {
URL url = new URL(link);
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
// logger.error("url=" + url + " encode:"+huc.getContentEncoding()+" type:"+huc.getContentType());
String type = huc.getContentType();
String charset = "utf-8";
int index = type.indexOf("charset=");
if (index != -1) {
index = index + 8;
charset = type.substring(index).trim();
} else
charset = "gb2312";
BufferedReader reader = new BufferedReader(
new InputStreamReader(huc.getInputStream(), charset));
String line = reader.readLine();
while (line != null) {
str += line;
line = reader.readLine();
}
reader.close();
huc.disconnect();
} catch (Exception e) {
// logger.error("gather: " + e.getMessage());
}
return str;
}
public String getWeather() {
String content = gather("http://weather.news.qq.com/inc/ss59.htm");
return parseWeatherQQ(content);
}
public String parseWeatherQQ(String content) {
String patternStr = "";
Pattern pattern;
Matcher matcher;
String str = "";
patternStr = "<table width=\\\"189\\\" border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\" background.*?height=\\\"3\\\"></td></tr>";
// patternStr = "<table cellSpacing=\\\"0\\\" cellPadding=\\\"0\\\" width=\\\"189\\\".* </table>";
pattern = Pattern.compile(patternStr, Pattern.DOTALL);
matcher = pattern.matcher(content);
// System.out.println(getClass() + " content=" + content);
// 提取今日的天气
if (matcher.find()) {
str = matcher.group(0);
str = str + "</table>";
// logger.info("str=" + str);
str = str.replaceAll("width=\\\"189\\\"",
"width=100%");
// 替换表格背景
str = str.replaceAll("background=\"/images/r_tembg2.gif\"", "class='font12'");
// 替换第一行的标头背景(灰色),左侧
str = str.replaceAll("background=\"/images/r_tembg4.gif\"", "");
// 替换行的背景
str = str.replaceAll("background=\"*.?gif\"", "");
str = str.replaceAll("weather", "");
// 替换第一行的标头背景(灰色),右侧
str = str.replaceAll("background=\"/images/r_tembg5.gif\"", "");
// 去除第一列的列宽
str = str.replaceAll("width=\"72\"", "width=50%");
// 去除第二列的列宽
str = str.replaceAll("width=\"117\"", "width=50%");
// 去除顶部的图片
str = str.replaceAll("<tr><td colspan=\"2\"><img src=\"/images/r_tembg1.gif\" width=100% height=\"6\"></td>", "");
// 去除底部的图片
str = str.replaceAll("<tr><td colspan=\"2\"><img src=\"/images/r_tembg3.gif\" width=100% height=\"3\"></td></tr>", "");
// 替换列高
// str = str.replaceAll("<td height=\"20\">", "<td height=0>");
// 替换图片
str = str.replaceAll("/images", "http://weather.news.qq.com/images");
}
return str;
}
%>
<style>
.font12 {
font-size: 12px;
}
</style>
<%
String content = getWeather();
out.print(content);
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -