用JAVA解析网站HTML
我想解析一个简单的网站,并从该网站中获取信息 我曾经用DocumentBuilderFactory解析XML文件,我尝试对html文件做同样的事情,但它总是进入无限循环用JAVA解析网站HTML,java,html,scrape,Java,Html,Scrape,我想解析一个简单的网站,并从该网站中获取信息 我曾经用DocumentBuilderFactory解析XML文件,我尝试对html文件做同样的事情,但它总是进入无限循环 URL url = new URL("http://www.deneme.com"); URLConnection uc = url.openConnection(); InputStreamReader input = new InputStreamReader(uc.getInputStream()
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标记刮取数据?有一种更简单的方法可以做到这一点。我建议使用。使用JSoup,您可以执行以下操作
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
或者如果你想要尸体:
Elements body = doc.select("body");
或者,如果您需要所有链接:
Elements links = doc.select("body a");
您不再需要获取连接或处理流。简单。如果您曾经使用过jQuery,那么它与此非常相似 HTML并不总是有效的、格式良好的XML。尝试使用特殊的HTML解析器而不是XML解析器。有几种不同的方案可供选择:
肯定是答案。;-) 首先,谢谢大家!但是什么是#mp itn b a?#mp itn只是一个容器,带有
id=“mp itn”
请参见我的编辑。了解css选择器的工作原理会对您有很大帮助。好的,这正是我需要的,谢谢。库比原始代码更好,我会选择它。首先,您可以使用字符串而不是文件。它进入无限循环的什么地方?可能是因为url的输入流似乎没有结束,所以您遇到了这个问题。