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;
}
}
评论
Matcher m = p.matcher(outstr);
你的Mian方法里面,怎么漏代码了?那个字符串应该写什么,我运行这段程序报空指针
谢谢,请完善!!!
发表评论
- 浏览: 39350 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
EHCache 初步使用指南
想请教下ehcache下缓存同步机制的问题。 最近碰到这样一个问题,采用tomc ...
-- by nicolas_liu -
怎么样设计一款优秀的J2ME ...
兄弟。你盗用我的文章了。这篇文章可是我很久之前的作品哦
-- by wuhua -
浅谈JAVA数据缓存
受教了,非常感谢!
-- by freedom616 -
基于Lucene/XML的站内全文 ...
有些象solr
-- by tovegar -
java抓取天气预报数据
Pattern p = Pattern.compile(" ...
-- by fang831016






评论排行榜