使用JAVA解析网站HTML

Can*_*lan 46 html java scrape

我想解析一个简单的网站,并从该网站上抓取信息.

我曾经用DocumentBuilderFactory解析XML文件,我试图对html文件做同样的事情,但它总是陷入无限循环.

    URL url = new URL("http://www.deneme.com");
    URLConnection uc = url.openConnection();

    InputStreamReader input = new InputStreamReader(uc.getInputStream());
    BufferedReader in = new BufferedReader(input);
    String inputLine;

     FileWriter outFile = new FileWriter("orhancan");
     PrintWriter out = new PrintWriter(outFile);

    while ((inputLine = in.readLine()) != null) {
        out.println(inputLine);
    }

    in.close();
    out.close();

    File fXmlFile = new File("orhancan");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);


    NodeList prelist = doc.getElementsByTagName("body");
    System.out.println(prelist.getLength());
Run Code Online (Sandbox Code Playgroud)

什么是问题?或者有没有更简单的方法从网站上抓取给定html标签的数据?

Ami*_*far 87

有一种更容易的方法来做到这一点.我建议使用JSoup.使用JSoup,你可以做类似的事情

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
Run Code Online (Sandbox Code Playgroud)

或者如果你想要身体:

Elements body = doc.select("body");
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要所有链接:

Elements links = doc.select("body a");
Run Code Online (Sandbox Code Playgroud)

您不再需要获取连接或处理流.简单.如果您曾经使用过jQuery,那么它就非常相似.

  • 看我的编辑.了解css选择器如何工作将真正帮助您. (2认同)
  • 好的,http://jsoup.org/cookbook/extracting-data/dom-navigation 这确实是我所需要的,谢谢。 (2认同)

Die*_*mar 21

绝对是JSoup的答案.;-)


Jan*_*Jan 5

HTML并不总是有效的,格式良好的XML.尝试使用特殊的HTML解析器而不是XML解析器.有几种不同的可用:

http://java-source.net/open-source/html-parsers