我最近在用Java做一个信息抽取的工具,我用了Html Parser想从一个天气网站上http://www.weather.unisys.com/forecast.pl?Name=Shanghai抽取上海天气的信息,但是网页源文件中内容太多了,我用Filter,visitor都没法把要的信息抽取过来,我想问问大家有没有什么方法可以用Html Parser从html DOM里面精确的抽取信息。下面是我要从网页源文件里面抽取的信息
Latest Observation for Shanghai, CITemp: 22C (72F)
Site: ZSSS (Shanghai, CI)
Time: 03Z 23 APR 09
Temp: 22 C (72 F)
Dewpt: 5 C (41 F)
Rel Hum: 33%
Winds: SE at 15 knt
Pressure(alt): 1016.0 mb (30.01 in)
Skies:
Weather:
Almanac
Sunrise: 5:17 AM
Sunset: 6:27 PM
希望大家多多帮忙,谢谢!
Latest Observation for Shanghai, CITemp: 22C (72F)
Site: ZSSS (Shanghai, CI)
Time: 03Z 23 APR 09
Temp: 22 C (72 F)
Dewpt: 5 C (41 F)
Rel Hum: 33%
Winds: SE at 15 knt
Pressure(alt): 1016.0 mb (30.01 in)
Skies:
Weather:
Almanac
Sunrise: 5:17 AM
Sunset: 6:27 PM
希望大家多多帮忙,谢谢!
解决方案 »
- SSH里我想点击页面的链接之后把链接名字以参数形式传给action层应该怎么写?代码如下
- spring+hibernate配置事务,hibernate必须使用数据源吗?
- 用ssh2+tomcat+sqlserver2005做的一个项目,在测试的时候,出了点小问题,请教高手!!!
- struts+hibernate实现用户管理出现的问题
- jxl 导出数据到excel问题
- 编码方式
- spring+hibernate+struts2框架搭建jar包使用的问题,求大神帮帮忙!
- tomcat5.5数据库连接池问题
- 用JAVA实现简单的程序
- 关于j2eetutorial中的Duke的问题?
- 如何用java编写从网页中抽取信息的工具
- Axis调用.Net Webservice问题!
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* 分析气象信息,
* 通过查看页面代码,确定:
* 第一步,先去掉信息中的无效html标签
* 第二步,用万能的正则表达式抓取出需要的信息
*
* @author jinxfei
*
*/
public class Test {
public static void main(String[] args) throws Exception{ //我把网页的内容存在文件里了,你只需要关系htmlStr最终包含的是网页信息就可以
BufferedReader r=new BufferedReader(new FileReader("d:/temp/forecast.txt"));
StringBuffer sb=new StringBuffer();
String curLine;
while((curLine=r.readLine())!=null){
sb.append(curLine+"\n");
}
String htmlStr=sb.toString();
//第一遍去掉信息中的<b>标签
htmlStr=htmlStr.replaceAll("(<b>|</b>)", "");
//第二遍过滤有用的信息
Pattern infoPattern=Pattern.compile("((Temp|Site|Time|Dewpt|Rel Hum|Winds|Pressure\\(alt\\)|Skies|Weather|Sunrise|Sunset):.*?)<");
Matcher m=infoPattern.matcher(htmlStr);
while(m.find()){
System.out.println(m.group(1));
}
} }