请熟悉HtmlParser(或了解分析html)的朋友进来,万分感谢 本帖最后由 xiongchangjing 于 2010-10-23 21:34:35 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用过一种土办法:先把每行代码trim后拼装,整个网页就成一个大String,然后使用正则表达式根据特征来提取信息。如果网页信息很复杂的话,可以用正则表达式先进行粗提,然后在里面使用正则再提一次… import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args){ String str="<tr>" + "<th style=\"border-left: 1px solid #cccccc; border-top: 1px solid #cccccc;\">凭证号</th>" + "<th style=\"border-top: 1px solid #cccccc;\">违法代码</th>" + "<th style=\"border-top: 1px solid #cccccc;\">违章事件</th>" + "<th style=\"border-top: 1px solid #cccccc;\">违章时间</th>" + "<th style=\"border-top: 1px solid #cccccc;\">违章地点</th>" + "<th style=\"border-top: 1px solid #cccccc;\">违章缴纳费用</th>" + "</tr>" + "<tr>" + "<td style=\"border-left: 1px solid #cccccc\">" + "44191400P642831</td>" + "<td>1303</td>" + "<td>机动车行驶超过规定时速50%以下的</td>" + "<td>2010-09-24 15:24:21.0</td><td>" + "塘厦蛟平路科苑城路段</td>" + "<td>150.0</td>" + "</tr>" + "<tr>" + "<td style=\"border-left: 1px solid #cccccc\">44192500P579896</td>" + "<td>1303</td>" + "<td> 机动车行驶超过规定时速50%以下的</td>" + "<td>2010-09-11 16:08:46.0</td>" + "<td>公常线治安工作站路段</td>" + "<td>150.0</td>" + "</tr>" + "<tr>" + "<td style=\"border-left: 1px solid #cccccc\">44191400M890826" + "</td>" + "<td>1230</td>" + "<td>机动车违反禁止标线指示的</td>" + "<td>2010-02-03 16:38:50.0</td>" + "<td>东莞市塘厦镇沙湖路</td>" + "<td>200.0</td>" + "</tr>"; Matcher m=Pattern.compile("<t[hd][^<>]*>([^<>]*)</t[hd]>",Pattern.DOTALL).matcher(str); int count=0; while(m.find()){ count++; System.out.print(m.group(1)); System.out.print(" "); if(count==6){ System.out.println(); count=0; } } }} 楼主,你是怎么用httpclient模拟提交数据的啊,给个例子吧,我也也做违章查询功能,现在没法让交管局网站返回数据,跪求啊, axis2客户端中如何使用byte[]构造datahandler? tomcat无法启动问题 关于ehcache 磁盘缓存问题。 Java开源门户系统Liferay 、JetSpeed 是什么,知道的进 mysql加了unique字段后,AUTO_INCREMENT字段只能从1开始?? (散100分)庆祝SSH问题解决,并附上解决方法。 用抽象工厂模式实现构架产品及单例模式的产品管理类 求助!如何在tomacat下运行servlet? hibernate多表查询时为什么用<one-to-many>??? 如何发布自己的web服务 javaee(ssh)和云存储的关系 jsp分页问题
先把每行代码trim后拼装,整个网页就成一个大String,然后使用正则表达式根据特征来提取信息。
如果网页信息很复杂的话,可以用正则表达式先进行粗提,然后在里面使用正则再提一次…
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args){
String str="<tr>" +
"<th style=\"border-left: 1px solid #cccccc; border-top: 1px solid #cccccc;\">凭证号</th>" +
"<th style=\"border-top: 1px solid #cccccc;\">违法代码</th>" +
"<th style=\"border-top: 1px solid #cccccc;\">违章事件</th>" +
"<th style=\"border-top: 1px solid #cccccc;\">违章时间</th>" +
"<th style=\"border-top: 1px solid #cccccc;\">违章地点</th>" +
"<th style=\"border-top: 1px solid #cccccc;\">违章缴纳费用</th>" +
"</tr>" +
"<tr>" +
"<td style=\"border-left: 1px solid #cccccc\">" +
"44191400P642831</td>" +
"<td>1303</td>" +
"<td>机动车行驶超过规定时速50%以下的</td>" +
"<td>2010-09-24 15:24:21.0</td><td>" +
"塘厦蛟平路科苑城路段</td>" +
"<td>150.0</td>" +
"</tr>" +
"<tr>" +
"<td style=\"border-left: 1px solid #cccccc\">44192500P579896</td>" +
"<td>1303</td>" +
"<td> 机动车行驶超过规定时速50%以下的</td>" +
"<td>2010-09-11 16:08:46.0</td>" +
"<td>公常线治安工作站路段</td>" +
"<td>150.0</td>" +
"</tr>" +
"<tr>" +
"<td style=\"border-left: 1px solid #cccccc\">44191400M890826" +
"</td>" +
"<td>1230</td>" +
"<td>机动车违反禁止标线指示的</td>" +
"<td>2010-02-03 16:38:50.0</td>" +
"<td>东莞市塘厦镇沙湖路</td>" +
"<td>200.0</td>" +
"</tr>";
Matcher m=Pattern.compile("<t[hd][^<>]*>([^<>]*)</t[hd]>",Pattern.DOTALL).matcher(str);
int count=0;
while(m.find()){
count++;
System.out.print(m.group(1));
System.out.print(" ");
if(count==6){
System.out.println();
count=0;
}
}
}
}