用JAVAparsing网站HTML

我想parsing一个简单的网站,并从该网站上刮取信息。

我曾经用DocumentBuilderFactoryparsingXML文件,我试图为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()); 

这是什么问题? 或者是否有更简单的方法来从一个给定的HTML标签的网站刮取数据?

有一个更简单的方法来做到这一点。 我build议使用JSoup 。 用JSoup你可以做类似的事情

 Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); Elements newsHeadlines = doc.select("#mp-itn ba"); 

或者如果你想要的身体:

 Elements body = doc.select("body"); 

或者如果你想要所有的链接:

 Elements links = doc.select("body a"); 

您不再需要连接或处理stream。 简单。 如果你曾经使用jQuery,那么它是非常相似的。

JSoup绝对是答案。 😉

HTML并不总是有效的,格式良好的XML。 尝试一个特殊的HTMLparsing器而不是XMLparsing器。 有几个不同的可用:

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