java获取html内的内容
哪位高手帮我实现一下,谢谢!:一个html,里面至少有一个table(且只有一个table),假设是tb1,现在我想把tb1的最后一个<tr>内的<td>里的内容读取来,...
哪位高手帮我实现一下,谢谢!:
一个html,里面至少有一个table(且只有一个table),假设是tb1,现在我想把tb1的最后一个<tr>内的<td>里的内容读取来,放到一个字符串数组中.
示例:
对于以下的<tr>
<tr>
<TD bgColor=#3c57c4><b>帐务时间</b></TD>
<TD bgColor=#3c57c4 align=center><i><font size=+2 color=blue>用户标识</font></i></TD>
<TD bgColor=#3c57c4>客户标识 </TD>
<TD bgColor=#3c57c4>用户帐号 </TD>
</tr>
取出结果:
content[0]="帐务时间"
content[1]="用户标识"
content[2]="客户标识"
content[2]="用户帐号"
从html页上获得tb1中获得最后一个<tr>没有问题,现在问题是解析上面贴出的<tr>里面的部分.
注意:1.以上的<html>要当作一个java字符串处理(这里特别说明,html页面不是可以浏览的html页面,是保存在数据库里的一个字符串,所以请您不要说用javascript来获取值).
2.td可能有很多的属性,td里面的内容可能有很多其它标签的修饰,这些是不确定的
谢谢大家,特别谢谢小桥流水人家,因为只有你写了一个完整的程序,但是事实上我采用了ubibin 的建议,因为这个作为一个拿去应用的东西,容错性高点次行.smluyi显然是题目都没有看完就随便给我回答.我在提问中已经特别强调,不能用javascript 展开
一个html,里面至少有一个table(且只有一个table),假设是tb1,现在我想把tb1的最后一个<tr>内的<td>里的内容读取来,放到一个字符串数组中.
示例:
对于以下的<tr>
<tr>
<TD bgColor=#3c57c4><b>帐务时间</b></TD>
<TD bgColor=#3c57c4 align=center><i><font size=+2 color=blue>用户标识</font></i></TD>
<TD bgColor=#3c57c4>客户标识 </TD>
<TD bgColor=#3c57c4>用户帐号 </TD>
</tr>
取出结果:
content[0]="帐务时间"
content[1]="用户标识"
content[2]="客户标识"
content[2]="用户帐号"
从html页上获得tb1中获得最后一个<tr>没有问题,现在问题是解析上面贴出的<tr>里面的部分.
注意:1.以上的<html>要当作一个java字符串处理(这里特别说明,html页面不是可以浏览的html页面,是保存在数据库里的一个字符串,所以请您不要说用javascript来获取值).
2.td可能有很多的属性,td里面的内容可能有很多其它标签的修饰,这些是不确定的
谢谢大家,特别谢谢小桥流水人家,因为只有你写了一个完整的程序,但是事实上我采用了ubibin 的建议,因为这个作为一个拿去应用的东西,容错性高点次行.smluyi显然是题目都没有看完就随便给我回答.我在提问中已经特别强调,不能用javascript 展开
5个回答
2015-10-27 · 知道合伙人互联网行家
关注
展开全部
简单实现:
HtmlRequest类的内容:
[java] view plaincopy
package com.capinfotech.net;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HtmlRequest {
public static void main(String[] args) throws IOException {
URL url = new URL("http://www.163.com/");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
InputStream inputStream = conn.getInputStream(); //通过输入流获得网站数据
byte[] getData = readInputStream(inputStream); //获得网站的二进制数据
String data = new String(getData, "gb2312");
System.out.println(data);
}
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
}
这样就能获得http://www.163.com的内容,在控制台会打印输出
HtmlRequest类的内容:
[java] view plaincopy
package com.capinfotech.net;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HtmlRequest {
public static void main(String[] args) throws IOException {
URL url = new URL("http://www.163.com/");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
InputStream inputStream = conn.getInputStream(); //通过输入流获得网站数据
byte[] getData = readInputStream(inputStream); //获得网站的二进制数据
String data = new String(getData, "gb2312");
System.out.println(data);
}
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
}
这样就能获得http://www.163.com的内容,在控制台会打印输出
展开全部
小程序里,字符串可以按对去截td,
建议你用开源的java parse html库,这样专业一点,容错性高一点。
建议你用开源的java parse html库,这样专业一点,容错性高一点。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用javascript来取值,楼主如果用java来取就是本末倒置了,在<body onload>里面加载一段javascript,
用 innerText取出最后<tr>里面的值,然后可以存到一个<input type="hidden">中,提交到后台,再保存到数据库
用 innerText取出最后<tr>里面的值,然后可以存到一个<input type="hidden">中,提交到后台,再保存到数据库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我们假设最后一个tr里的内容为字符串str。
StringTokenizer st = new StringTokenizer(str, "<");
while(st.hasMoreTokens()){
String el = st.nextToken();
if (!el.endsWith(">")){
int index = el.indexOf(">");
String result;
if (index == -1){
result = el;
} else{
result = el.substring(index);
}
content[i] = result;
i++;
}
}
思路就是,用“<”作为标识分割字符串,这样除显示内容以外的子字符串都是以“>”结尾。将得到的内容截掉标签部分就ok了。
StringTokenizer st = new StringTokenizer(str, "<");
while(st.hasMoreTokens()){
String el = st.nextToken();
if (!el.endsWith(">")){
int index = el.indexOf(">");
String result;
if (index == -1){
result = el;
} else{
result = el.substring(index);
}
content[i] = result;
i++;
}
}
思路就是,用“<”作为标识分割字符串,这样除显示内容以外的子字符串都是以“>”结尾。将得到的内容截掉标签部分就ok了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
疯啦,为什么不用dom4j????方法都跟你写好了,直接调用就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询