如何提取网页上表格中的数据

GaoJiG 2015-09-16 01:47:27
最近工作中遇到这样的问题,就是要将网页上的表格数据存入数据库,望各位大侠指点一二。

package com.gaojig;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class TestJsoup {
public static void main(String[] args) {
try {

Document doc = Jsoup.connect("http://gaojig.sinaapp.com/cr.html").get();

Elements trs = doc.select("table").select("tr");
for(int i = 0;i<trs.size();i++){
Elements tds = trs.get(i).select("td");
for(int j = 0;j<tds.size();j++){
String text = tds.get(j).text();
System.out.print(text);
}System.out.println();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


现在我把页面的数据都读取到了,但很混乱不知道怎么一一对应存入数据库。
...全文
434 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小雷同学 2015-09-16
  • 打赏
  • 举报
回复
假如说你解析到的数据时这样:身份信息,性别,出生日期...男,1990.1.1,; 你可以根据“性别”这个字段往后找8位 就是性别的值呀
小雷同学 2015-09-16
  • 打赏
  • 举报
回复
引用 10 楼 weelvis 的回复:
[quote=引用 9 楼 l821398100 的回复:] 你这个表格格式是固定的吗?如果是固定的,如果是固定的可以通过“身份信息”等字段来确认数据的对应关系
是固定的,怎么通过字段来确认数据的对应关系呢?[/quote]发一下你解析出来数据?
tony4geek 2015-09-16
  • 打赏
  • 举报
回复
我这个随便举例。其他同理找规律啊。你一共 几个table , 找到下标就是不同区域的数据。
GaoJiG 2015-09-16
  • 打赏
  • 举报
回复
引用 8 楼 rui888 的回复:
[quote=引用 6 楼 weelvis 的回复:] [quote=引用 5 楼 rui888 的回复:] 从上到下,想要什么解析什么 就用Jsoup
不太会,你能解析一两个给我看下吗?如被查询者证件类型,被查询者证件号码。这是网站源http://gaojig.sinaapp.com/cr.html[/quote] Document doc = Jsoup.connect("http://gaojig.sinaapp.com/cr.html").get(); //包含 <tr height=30 的元素 Elements trs =doc.select("[height=30]").eq(1); // 身份证---320812121312312213 System.out.println(trs.select("font").eq(1).text()+"---"+trs.select("font").eq(2).text()); [/quote] 谢谢,我试了这个是可以的。但我发现个问题就是这个是有height=30这样的标签,其他的没有怎么弄呢
GaoJiG 2015-09-16
  • 打赏
  • 举报
回复
引用 9 楼 l821398100 的回复:
你这个表格格式是固定的吗?如果是固定的,如果是固定的可以通过“身份信息”等字段来确认数据的对应关系
是固定的,怎么通过字段来确认数据的对应关系呢?
小雷同学 2015-09-16
  • 打赏
  • 举报
回复
你这个表格格式是固定的吗?如果是固定的,如果是固定的可以通过“身份信息”等字段来确认数据的对应关系
tony4geek 2015-09-16
  • 打赏
  • 举报
回复
引用 6 楼 weelvis 的回复:
[quote=引用 5 楼 rui888 的回复:] 从上到下,想要什么解析什么 就用Jsoup
不太会,你能解析一两个给我看下吗?如被查询者证件类型,被查询者证件号码。这是网站源http://gaojig.sinaapp.com/cr.html[/quote] Document doc = Jsoup.connect("http://gaojig.sinaapp.com/cr.html").get(); //包含 <tr height=30 的元素 Elements trs =doc.select("[height=30]").eq(1); // 身份证---320812121312312213 System.out.println(trs.select("font").eq(1).text()+"---"+trs.select("font").eq(2).text());
GaoJiG 2015-09-16
  • 打赏
  • 举报
回复
引用 3 楼 skgary 的回复:
[quote=引用 2 楼 weelvis 的回复:] 每个div和table都没id,所以不好辨别
只能按顺序遍历。[/quote]不太会,你能解析一两个给我看下吗?如被查询者证件类型,被查询者证件号码。这是网站源http://gaojig.sinaapp.com/cr.html
GaoJiG 2015-09-16
  • 打赏
  • 举报
回复
引用 5 楼 rui888 的回复:
从上到下,想要什么解析什么 就用Jsoup
不太会,你能解析一两个给我看下吗?如被查询者证件类型,被查询者证件号码。这是网站源http://gaojig.sinaapp.com/cr.html
tony4geek 2015-09-16
  • 打赏
  • 举报
回复
从上到下,想要什么解析什么 就用Jsoup
GaoJiG 2015-09-16
  • 打赏
  • 举报
回复
http://gaojig.sinaapp.com/cr.html 这个是网页链接,可以看下源代码
skgary 2015-09-16
  • 打赏
  • 举报
回复
引用 2 楼 weelvis 的回复:
每个div和table都没id,所以不好辨别
只能按顺序遍历。
GaoJiG 2015-09-16
  • 打赏
  • 举报
回复
每个div和table都没id,所以不好辨别
skgary 2015-09-16
  • 打赏
  • 举报
回复
需要一个一个div/table仔细的分析过滤。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧