像百度百科、维基百科获取到的网页源码经常会含有HTML标签,要想获取到跟页面上我们看到的一样的内容,就需要对网页源码进行处理。
下面是处理网页源码中的HTML标签的工具类:
public class StringUtil {
public static String stripHTML(String html) {
String noHTMLString = "";
html = html.replaceAll("&", "&");
Matcher m = Pattern
.compile("&#(\\d+);", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL | Pattern.CANON_EQ)
.matcher(html);
boolean b = false;
int i = 0;
while (m.find()) {
if (i > 500) {
System.out.println(i);
}
i++;
html = html.replace("&#" + m.group(1) + ";", (char) Integer.parseInt(m.group(1)) + "");
b = true;
}
if (!b) {
m = Pattern
.compile("&#x([\\da-f]+);",
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL | Pattern.CANON_EQ)
.matcher(html);
int j = 0;
while (m.find()) {
if (j > 500) {
System.out.println(j);
}
j++;
html = html.replaceAll("&#[x|X]" + m.group(1) + ";", (char) Integer.parseInt(m.group(1), 16) + "");
}
}
noHTMLString = html.replaceAll("<\\s*(?:br|Br|BR|bR|div|DIV|Div|p|P|td|TD|Td)\\s*(?:[^>])*\\s*>", "\n")
.replaceAll(" ", " ").replaceAll("", " ").replaceAll(" ", " ").replaceAll("\\<.*?\\>", "")
.replaceAll("&(?:g|l)t", "");
return noHTMLString.trim();
}
}
处理后就可以得到跟我们网页上看到的一样的内容了,有时候有些特殊的字符可能没有被处理掉,可以通过.replaceAll()替换掉即可。