用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器。 有几个不同的可用: