Je veux analyser un site Web simple et extraire des informations de ce site Web.
J'avais l'habitude d'analyser des fichiers XML avec DocumentBuilderFactory, j'ai essayé de faire la même chose pour le fichier html mais il entre toujours dans une boucle infinie.
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());
Quel est le problème? Ou existe-t-il un moyen plus simple d'extraire les données d'un site Web pour une balise html donnée?
Il existe un moyen beaucoup plus simple de procéder. Je suggère d'utiliser JSoup . Avec JSoup, vous pouvez faire des choses comme
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
Ou si vous voulez le corps:
Elements body = doc.select("body");
Ou si vous voulez tous les liens:
Elements links = doc.select("body a");
Vous n'avez plus besoin d'obtenir de connexions ou de gérer des flux. Simple. Si vous avez déjà utilisé jQuery, il est très similaire à cela.
Certainement JSoup est la réponse. ;-)
HTML n'est pas toujours XML valide et bien formaté. Essayez un analyseur HTML spécial au lieu d'un analyseur XML. Il en existe plusieurs: