资源简介
java爬取网页表格的例子(运行环境myeclipse)

代码片段和文件信息
package com;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Tag;
import org.jsoup.select.Elements;
public class DataTableUtil {
private final static int NUM = 5;
//要抓取的表格可能出现的属性名
static String[] Propertys={“地块编号““宗地编号““地块位置““用地性质““规划面积““出让面积““发布时间““挂牌起始价““位置““交易时间““面积““规划用途““容积率““起价““成交价““交易方式““竞得人“};
/**
* 找到适合的装数据的TABle
*
* @param location
* @param document
* @return
*/
//取最里面的table进入isValueElement方法检测是不是我们需要的table
public static List getFitElement(Document document) {
if (Propertys != null) {
Element element = document.getElementsByTag(“body“).get(0);
List fitElments = new ArrayList();
Elements tableElements = element.getElementsByTag(“table“);
if (tableElements != null && tableElements.size() > 0) {
for (int i = 0; i < tableElements.size(); i++) {
Element tableElement = tableElements.get(i);
Elements ces = tableElement.getElementsByTag(“table“);
if (ces != null && ces.size() > 1) {
} else {
TableElement te;
if ((te = isValueElement(PropertystableElement)) != null) {
fitElments.add(te);
}
}
}
} else {
return null;
}
return fitElments;
}
return null;
}
//找出属性名所在的行把属性名所在的行之上的信息去掉
//ri为属性名所在行的结尾索引
//row为属性名所在行占的行数
//ri-row为属性名所在行的开始索引这里取属性名所在行到表格的结尾行
private static Element removeRedundance(String[] Propertys
Element element) {
Elements tres = element.getElementsByTag(“tr“);
Element trElement = tres.get(0);
Elements tde = trElement.getElementsByTag(“td“);
int row = 1;
for (Element tdElement : tde) {
String attribute = tdElement.attr(“rowspan“);
if (attribute != null && !attribute.equals(““)) {
int rowSpan = Integer.valueOf(attribute);
if (rowSpan > row) {
row = rowSpan;
}
}
}
List elements = new ArrayList();
for (int i = 0; i < row; i++) {
elements.add(tres.get(i));
}
int ri = 0;
while (!isValueElements(Propertys elements)) {
elements = new ArrayList();
row = 1;
Elements tdes = tres.get(ri).getElementsByTag(“td“);
for (Element tdElement : tdes) {
String attribute = tdElement.attr(“rowspan“);
if (attribute != null && !attribute.equals(““)) {
int rowSpan = Integer.valueOf(attribute);
if (rowSpan > row) {
row = rowSpan;
}
}
}
for (int i = 0; i < row; i++) {
elements.add(tres.get(ri + i));
}
ri = ri + row;
}
if (ri > 0) {
Elements trs = element.getElementsByTag(“tr“);
int size = trs.size();
Element newElement = new Element(Tag.valueOf(“table“) “table“);
for (int i = ri-row; i < size; i++) {
newElement.appendChild(trs.get(i));
}
return newElement;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-01-24 14:17 crawTable\
文件 764 2014-01-24 10:21 crawTable\.classpath
文件 385 2014-01-24 10:19 crawTable\.project
目录 0 2014-01-24 11:29 crawTable\.settings\
文件 629 2014-01-24 10:19 crawTable\.settings\org.eclipse.jdt.core.prefs
目录 0 2014-01-24 11:29 crawTable\bin\
目录 0 2014-01-24 11:37 crawTable\bin\com\
文件 7570 2014-01-24 14:15 crawTable\bin\com\DataTableUtil.class
文件 704 2014-01-24 11:41 crawTable\bin\com\PropertyInfo.class
文件 2084 2014-01-24 11:30 crawTable\bin\com\SimFeatureUtil.class
文件 1122 2014-01-24 11:29 crawTable\bin\com\StringUtil.class
文件 963 2014-01-24 11:29 crawTable\bin\com\TableElement.class
文件 7857 2014-01-24 13:57 crawTable\bin\com\TableUtil.class
文件 2165 2014-01-24 14:10 crawTable\bin\com\TestCrawTable.class
目录 0 2013-08-16 17:11 crawTable\crawWebjar\
文件 36586 2013-07-31 16:49 crawTable\crawWebjar\chardet.jar
文件 207723 2013-07-31 16:49 crawTable\crawWebjar\commons-lang.jar
文件 55424 2013-07-31 16:49 crawTable\crawWebjar\commons-logging.jar
文件 51526 2013-07-31 16:49 crawTable\crawWebjar\cpdetector.jar
文件 433368 2013-07-31 16:49 crawTable\crawWebjar\httpclient-4.2.5.jar
文件 227275 2013-07-31 16:49 crawTable\crawWebjar\httpcore-4.2.4.jar
文件 293672 2013-07-31 16:49 crawTable\crawWebjar\jsoup-1.7.2.jar
目录 0 2014-01-24 10:27 crawTable\src\
目录 0 2014-01-24 11:37 crawTable\src\com\
文件 7608 2014-01-24 14:15 crawTable\src\com\DataTableUtil.java
文件 321 2014-01-24 11:41 crawTable\src\com\PropertyInfo.java
文件 1706 2014-01-24 11:30 crawTable\src\com\SimFeatureUtil.java
文件 486 2014-01-24 11:29 crawTable\src\com\StringUtil.java
文件 596 2014-01-24 11:23 crawTable\src\com\TableElement.java
文件 9246 2014-01-24 13:57 crawTable\src\com\TableUtil.java
文件 974 2014-01-24 14:10 crawTable\src\com\TestCrawTable.java
............此处省略0个文件信息
相关资源
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
评论
共有 条评论