使用htmlparser获取sohu的天气预报
来源:互联网 发布:手机开通淘宝网店步骤 编辑:程序博客网 时间:2024/04/29 00:59
首先,我们新建一个类,存放天气信息
/*
* Created on 2005-3-8
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.exoplatform.portlets.chinaweather.component;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class Weather {
private String city;
private String state;
private String temperature;
private String time;
private String wind;
private String windpower;
private long UpdateTime;
/**
* @return
*/
public String getTemperature() {
return temperature;
}
/**
* @return
*/
public String getTime() {
return time;
}
/**
* @return
*/
public String getWind() {
return wind;
}
/**
* @return
*/
public String getWindpower() {
return windpower;
}
/**
* @param string
*/
public void setTemperature(String string) {
temperature = string;
}
/**
* @param string
*/
public void setTime(String string) {
time = string;
}
/**
* @param string
*/
public void setWind(String string) {
wind = string;
}
/**
* @param string
*/
public void setWindpower(String string) {
windpower = string;
}
/**
* @return
*/
public long getUpdateTime() {
return UpdateTime;
}
/**
* @param l
*/
public void setUpdateTime(long l) {
UpdateTime = l;
}
/**
* @return
*/
public String getState() {
return state;
}
/**
* @param string
*/
public void setState(String string) {
state = string;
}
/**
* @return
*/
public String getCity() {
return city;
}
/**
* @param string
*/
public void setCity(String string) {
city = string;
}
}
具体的解析代码为:
private Weather parserWeather() throws Exception {
Weather w = new Weather();
try {
//Parser parser =
// new Parser("file://localhost/I:/projects/query.html");
Parser parser =
new Parser("http://weather.news.sohu.com/query.php?city=镇江");
parser.setEncoding("GBK");
Node nodes[] = parser.extractAllNodesThatAre(TableTag.class);
TableTag table = (TableTag) nodes[3];
//temperature
StringNode[] stringNodes = table.digupStringNode("镇江");
StringNode name = stringNodes[0];
w.setCity(name.toPlainTextString());
CompositeTag td = (CompositeTag) name.getParent();
CompositeTag tr = (CompositeTag) td.getParent();
int columnNo = tr.findPositionOf(td);
TableColumn nextColumn = (TableColumn) tr.childAt(5);
Node expectedName = nextColumn.childAt(0);
Node expectedName2 = nextColumn.childAt(2);
//System.out.println(expectedName.getText());
//System.out.println(expectedName2.getText());
w.setState(expectedName.getText());
w.setTemperature(expectedName2.getText());
//time
stringNodes = table.digupStringNode("时间");
name = stringNodes[0];
//System.out.println(name.toPlainTextString());
String time =
name
.toPlainTextString()
.substring(4, name.toPlainTextString().length())
.trim();
//System.out.println(time);
w.setTime(time);
//wind
stringNodes = table.digupStringNode("风向");
name = stringNodes[0];
//System.out.println(name.toPlainTextString());
String wind =
name
.toPlainTextString()
.substring(4, name.toPlainTextString().length())
.trim();
//System.out.println(wind);
w.setWind(wind);
//wind power
stringNodes = table.digupStringNode("风力");
name = stringNodes[0];
//System.out.println(name.toPlainTextString());
String windpower =
name
.toPlainTextString()
.substring(4, name.toPlainTextString().length())
.trim();
//System.out.println(windpower);
w.setWindpower(windpower);
w.setUpdateTime(System.currentTimeMillis());
} catch (ParserException e) {
e.printStackTrace();
}
return w;
}
解析出来的代码必须做缓存处理,
private static long TIME_TO_LIVE = 1000 * 60 * 60 * 12;
private Weather loadWeather() throws Exception {
Weather weather = weather = (Weather) cache_.get("chinaweather");
long currentTime = System.currentTimeMillis();
if (weather != null
&& currentTime < (weather.getUpdateTime() + TIME_TO_LIVE)) {
cache_.remove("chinaweather");
weather = null;
}
if (weather == null) {
synchronized (cache_) {
weather = parserWeather();
cache_.put("chinaweather", weather);
}
}
return weather;
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=314704
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用file_get_contents()获取sohu博客乱码问题
- 使用jsonp获取天气预报
- HtmlParser的使用
- htmlparser的简单使用
- HTMLparser的初步使用
- HTMLPARSER的使用
- SOHU门户使用的一些技术(转)
- .net使用WebService获取天气预报
- .net使用WebService获取天气预报
- 使用GSON获取天气预报信息
- 使用HtmlParser获取网页目标数据
- 纪念抗战胜利60周年-3亿两白银
- 如何嵌入Gecko引擎
- RIA 和 AJAX,选择最合适的产品
- 程序员的面包
- 中国和西方文化劣根的比较
- 使用htmlparser获取sohu的天气预报
- 纪念抗战胜利60周年-3亿两白银
- 程序员的灯下黑:不要忘记你的目标
- 如何最快的销售砖头(2.0版)
- 游戏规则--博弈论里的定律
- 用S60操作系统SDK开发NOKIA手机应用程序-学习笔记(2)
- 老外又为了是否使用Spring吵了一天
- Vccode龙堂英雄志
- Sivlerlight的开发工具 - VS2005还是Blend2?