日期:2014-05-18  浏览次数:20700 次

【50分】过滤网页HTML标记-求方法
大家好!
现在小弟遇到一个问题,困扰了我很久了
如下:用java   程序抓取了指定的网页,将内容保存到string   的对象里,我现在想把它去掉 <html> , <title> , <table> ...等等的符号,换句话说就像是在网页上
【全选】-> 【复制】完成这样的功能在保存成String   对象
[绝对不能人工参与~~~~]
希望各位帮忙,解决问题,马上给分~~~小弟谢谢先

------解决方案--------------------
关注中
------解决方案--------------------
自己写程序字符串处理
去掉从 <到> 的内容就可以了
------解决方案--------------------
System.out.println( " <a> asdfasdf <b> ".replaceAll( " <[^> ]*> ", " "));
大概思想就是这样.具体细节还要修改正则表达式.
------解决方案--------------------
想要精确删除的话,其实html的标签并不是很多~~~
都丢到一个容器里面去,越常用的放在越前面,然后就跟容器里面的数据进行比较吧~~~

------解决方案--------------------
把需要过滤的HTML标记写成正则表达式

或者用HTMLEncoder把 <> 转码....
------解决方案--------------------
我也急切关注....
------解决方案--------------------
package edu.cust.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HtmlFliter {

private Pattern p;

private Matcher m;

public String htmlChanger(String regEx, String htmlTag, String replaceStr) {

String ret = " ";
try {
p = Pattern.compile(regEx);// 设置比较模式
m = p.matcher(htmlTag);
boolean rs = m.find();
ret = p.matcher(htmlTag).replaceAll(replaceStr);

} catch (Exception e) {
}

return ret;
}

public static void main(String[] args) {

String htmlToChange = " <font color=#00000> Hello </font> ";//你要转换的HTML标记。

String yourRegEx = "( <\\s*[a-zA-Z][^> ]*> )|( </\\s*[a-zA-Z][^> ]*> ) ";//这个就是对应的去掉HTML标记的正则表达式

String replaceStr = " ";//这个是你要将它替换的字符串,因为你要消去HTML标记,所以这里用空串。

HtmlFliter fliter = new HtmlFliter();

String result = fliter.htmlChanger(yourRegEx, htmlToChange, replaceStr);

System.out.println( "----> : " + result);

}
}


怎么今天遇到两个类似的问题呢。
------解决方案--------------------
路过,我连提取都不会,汗
------解决方案--------------------
mark