日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

获取天气html,使用htmlparser获取sohu的天气预报

發布時間:2025/3/11 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取天气html,使用htmlparser获取sohu的天气预报 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,我們新建一個類,存放天氣信息

/*

*?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;

}

總結

以上是生活随笔為你收集整理的获取天气html,使用htmlparser获取sohu的天气预报的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。