网络爬虫-去除网页源码中的标签

来源:互联网 发布:淘宝开店货源免费代理 编辑:程序博客网 时间:2024/06/13 01:32

像百度百科、维基百科获取到的网页源码经常会含有HTML标签,要想获取到跟页面上我们看到的一样的内容,就需要对网页源码进行处理。
下面是处理网页源码中的HTML标签的工具类:

public class StringUtil {    public static String stripHTML(String html) {        String noHTMLString = "";        html = html.replaceAll("&amp;", "&");        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("&nbsp;", " ").replaceAll("\\<.*?\\>", "")                .replaceAll("&(?:g|l)t", "");        return noHTMLString.trim();    }}

处理后就可以得到跟我们网页上看到的一样的内容了,有时候有些特殊的字符可能没有被处理掉,可以通过.replaceAll()替换掉即可。