如何在java中将字符串解析为HTML DOM

时间:2014-11-29 18:01:08

标签: html parsing dom html-parsing

我的java程序将网页内容存储在字符串sb中,我想将字符串解析为HTML DOM。我该怎么做?

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.net.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class Scraper {
    public static void main(String[] args) throws IOException, SAXException {
        URL u;
        try {
            u = new URL("https://twitter.com/ssjsatish");
            URLConnection cn = u.openConnection();
            System.out.println("content type:  "+cn.getContentType());
            InputStream is = cn.getInputStream();
            long l = cn.getContentLengthLong();
            StringBuilder sb = new StringBuilder();
            if (l!=0) {
                int c;
                while ((c = is.read()) != -1) {
                   sb.append((char)c);
                }
                is.close();
                System.out.println(sb);
                DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                InputSource i = new InputSource();
                i.setCharacterStream(new StringReader(sb.toString()));
                Document doc = db.parse(i);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您不希望使用XML解析器来解析HTML,因为并非所有有效的HTML都是有效的XML。我建议使用专门用于解析“真实世界”HTML的库,例如我使用jsoup获得了良好的结果,但还有其他人。使用这种库的另一个优点是它们的API在设计时考虑了Web Scrapping,并提供了更简单的方法来访问HTML文档中的数据。