22
回答
小女子求 获取页面数据存放到本地数据库 源码
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
需要从以下网址 http://typhoon.weather.com.cn/获取到table里的数据(即右边的台风数据)

目前的想法是运用正则表达式,指定路径,获取到table里的全部元素
代码如下:
public class CodeRegex {

/**
	 * 	获取大陆台风页面table元素
	 * */
	public String getHTML(){
		try {
			String HTML ="";
			String ur = "http://gb.weather.gov.hk/wxinfo/currwx/tc_posc.htm"; // 获取远程网上的信息
			URL MyURL = new URL(ur);
			String str;
			URLConnection con = MyURL.openConnection();
			InputStreamReader ins = new InputStreamReader(con.getInputStream());
			BufferedReader in = new BufferedReader(ins);
			StringBuffer sb = new StringBuffer();
			

			while ((str = in.readLine()) != null) {
				sb.append(str);
			}
			in.close();

			 Pattern p = Pattern.compile("<table[^>]*>.+?<\\/table>");
			Matcher m = p.matcher(sb.toString());
			while (m.find()) {
				HTML = m.group();
				System.out.println("html:"+HTML);
			}
		} catch (MalformedURLException mfURLe) {
			System.out.println("MalformedURLException: " + mfURLe);
		} catch (IOException ioe) {
			System.out.println("IOException: " + ioe);
		}
		return getHTML();
	}

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		System.out.println("content:");
		TyphoonCNAction tcn = new TyphoonCNAction();
		String content = tcn.getHTML();
		System.out.println("content:"+content);
	}
}


后面不知道怎么具体获取到 <table>元素里面的值
怎样用字符串拆分   获取到数据存放到数据库里
请回答者务必用源码解释,如果有做过类似项目的,求代码到邮箱deegcyygydxj@163.com
据说用jsoup做会容易点,求大师给源码救命
举报
warm
发帖于6年前 22回/2K+阅
共有22个答案 最后回答: 6年前

引用来自“warm”的答案

引用来自“liange”的答案

贴个有table,有数据的网址吧
http://gb.weather.gov.hk/wxinfo/currwx/tc_prevpostabc.htm#1126  看香港的吧,这个是上次台风的数据,求例子
针对香港监测中心的数据,我的思路是,
抓取页面后,
1.第一次筛选内容,获得全部数据
先从<!--Content Start-->读取
到<!--Content End-->截止

2.第二次筛选内容,获得每个热带风暴的数据
根据<br><a name=1123></a>
  获得内容开始
根据 <br><br><hr width=80%><br>
获得内容结束
1123应该是监测中心记录中的第几个热带风暴

3.第三次筛选内容,获取每行的内容
从 <tr><td align='center'>开始到</td></tr>结束

你需要的是一个html解析器
http://www.oschina.net/project/tag/236/html-parser

你用正则表达式来实现,等于自己写了一个解析器

public String getHTML(){
		try {
			String HTML ="";
			String ur = "http://gb.weather.gov.hk/wxinfo/currwx/tc_posc.htm"; // 获取远程网上的信息
			URL MyURL = new URL(ur);
			String str;
			URLConnection con = MyURL.openConnection();
			InputStreamReader ins = new InputStreamReader(con.getInputStream());
			BufferedReader in = new BufferedReader(ins);
			StringBuffer sb = new StringBuffer();
			

			while ((str = in.readLine()) != null) {
				sb.append(str);
			}
			in.close();

			 Pattern p = Pattern.compile("<table[^>]*>.+?<\\/table>");
			Matcher m = p.matcher(sb.toString());
			while (m.find()) {
				HTML = m.group();
				System.out.println("html:"+HTML);
			}
		} catch (MalformedURLException mfURLe) {
			System.out.println("MalformedURLException: " + mfURLe);
		} catch (IOException ioe) {
			System.out.println("IOException: " + ioe);
		}
		return getHTML(); //这个地方是干什么的那  要递归?不懂
	}

http://typhoon.weather.com.cn/ 一个首页地址

http://gb.weather.gov.hk/wxinfo/currwx/tc_posc.htm  就只有

热带气旋的信息...

台风数据 没看到

m.group()是一个数组 0的时候是获取全部 1的时候获取的是第一个匹配的


你可以按照1获取下,我C#里边是这样的貌似记得java的差不太多

顶部